commercetools / commercetools/sphere-node-sdk
Loading products using process function does not stop
- Dominant language
- CoffeeScript
- Stars
- 16
- Forks
- 8
- PR merge metrics
- No merged PRs in 30d
Description
### Expected behavior
Function `sphere.products.perPage(50).process(function process(res){})` should load products in batches and send them to `process` function.
### Actual behavior
If I add this code to `process` function, loading will never stop.
``` javascript
var list = res.body.results;
list = list.map(function (item) {
delete item.id; // when commented out - loading works as expected
return item;
});
```
### Steps to reproduce the behavior
I was testing it on:
- project with 639 products and perPage = 50
- project with 1 product and perPage = 1
It looks like it occurs when perPage <= productCount
Here is full code which gives me an error.
``` javascript
var _ = require('lodash');
var Promise = require('bluebird');
var Sphere = require('sphere-node-sdk');
var SphereUtils = require('sphere-node-utils');
var SphereClient = Sphere.SphereClient;
var ProjectCredentialsConfig = SphereUtils.ProjectCredentialsConfig;
var sourceCredentials, sourceClient;
var PER_PAGE = 50;
var projectKey = "";
var total = 0;
console.log('>> Loading products from %s', projectKey);
ProjectCredentialsConfig.create()
.then(function (credentials) {
sourceCredentials = credentials.enrichCredentials({project_key: projectKey});
sourceClient = new SphereClient({config: sourceCredentials});
console.log("Loading per page %d", PER_PAGE);
var total = 0;
return sourceClient.products
.perPage(PER_PAGE)
.process(function(res) {
var list = res.body.results;
total += list.length;
console.log('Loaded %d / totally %d', list.length, total);
list = list.map(function (item) {
delete item.id; // when commented out - loading works as expected
return item;
});
return Promise.resolve();
})
})
.then(function() {
console.log("Finished - total %d", total);
})
.catch(function (err) {
console.error("Final error:", err.stack || err);
});
```
Contributor guide
Assessment
This issue has not been assessed yet.