我正在构建Shopify应用程序,并且在使用shopify-node-api模块时遇到了问题。这是我正在使用的代码:
collectProducts: ['storedProducts', function(results, callback) {
const collected_products = results.storedProducts;
for (var i = 0; i < collected_products.length; i++) {
Shopify.post('/admin/collects.json', {
"collect": {
"product_id": collected_products[i].product_id,
"collection_id": process.env.DAILY_COLLECTION
}
}, function(err, data, headers){
collected_products[i].collect_id = data.collect.id;
});
}
callback(null, collected_products);
}],
为清楚起见,collectProducts
项是异步函数的一部分。我正在尝试从对请求的响应中收集收集ID,并更新collect_id
中的collected_products
值。问题是我似乎无法从post请求的回调函数中访问collected_products
数组。有没有办法1.简单地为for循环的每次迭代返回该值或2.从该回调函数中访问collected_products
数组以存储这些值?
提前感谢您的任何答案!
答案 0 :(得分:1)
对于后来遇到这种情况的人,我能够通过使用我已经用于应用程序其他部分的异步模块来解决问题。 mapSeries函数完成了我想要做的事情。
// Get storedProducts from previous async function
async.mapSeries(results.storedProducts, function(product, cb) {
// Adding the new collect here
Shopify.post('/admin/collects.json', {
"collect": {
"product_id": product.product_id,
"collection_id": process.env.DAILY_COLLECTION
}
}, function(err, data, headers) {
// Update the product object with the Shopify-generated collect id
product.collect_id = data.collect.id
// Add the result to the mapSeries array
cb(err, product);
});
}, function(err, results) {
// Pass the now updated mapSeries array to the next async function
callback(err, results);
});