client.post(config.apiUrl+"cart", args, function(data,response) {
if (data.status == 'success') {
for (var key in data.data.cart_items_list) {
if (data.data.cart_items_list.hasOwnProperty(key)) {
data.data.cart_items_list[key].child.prodqty = function () {
client.get(config.apiUrl+"product/"+data.data.cart_items_list[key].child.child_id+"/quantity", function(invdata, invresponse) {
if(invdata.status == 'success'){
console.log(invdata.data);
return invdata.data;
console.log(data.data.cart_items_list[key].child.prodqty);
}
})
}
}
}
console.log(data.data.cart_items_list);
}
})
上面是我编写的一段代码,用于修改我从api客户端调用获得的数据。 第一个api调用将是一个json数据。我循环通过该数据从另一个api获取一个值并附加到父的json数据
console.log(data.data.cart_items_list[key].child.prodqty);
行在我的日志中打印正确的值,但是console.log(data.data.cart_items_list);
这里没有附加新的(child.prodqty)值。
我是Node.js的新手,所以我不知道我是否做得正确
编辑:
如果我console.log(data.data.cart_items_list);
输出中有prodqty。但它就是这样的。 prodqty: [Function]
答案 0 :(得分:0)
默认情况下,您说data.data.cart_items_list
获取prodqty: [Function]
。如果您获得prodqty
值,则需要在data.data.cart_items_list
中设置此值,因此您可以在循环后捕获它。我认为,我更喜欢在设置它时创建一个新的var:
client.post(config.apiUrl+"cart", args, function(data,response) {
var prodqty = {};
if (data.status == 'success') {
for (var key in data.data.cart_items_list) {
if (data.data.cart_items_list.hasOwnProperty(key)) {
data.data.cart_items_list[key].child.prodqty = function () {
client.get(config.apiUrl+"product/"+data.data.cart_items_list[key].child.child_id+"/quantity", function(invdata, invresponse) {
if(invdata.status == 'success'){
console.log(invdata.data);
return invdata.data;
prodqty.key = data.data.cart_items_list[key].child.prodqty; //prodqty associated with his key
console.log(data.data.cart_items_list[key].child.prodqty);
}
})
}
}
}
console.log(JSON.stringify(prodqty));
console.log(data.data.cart_items_list);
}
})
我添加了一个对象prodqty。然后我把他的钥匙放在prodqty whit上。我这个代码结构可能存在问题。 api使用回调,然后当循环完成可能prodqty对象没有设置值。要解决它,你需要在第二个api传递一个回调或等待一段时间直到第二个api结束:
setTimeout(function(){ console.log(JSON.stringify(prodqty)); }, 3000);` //3 seconds for example