Javascript 调用api客户端修改父api客户端调用的数据

Javascript 调用api客户端修改父api客户端调用的数据,javascript,json,node.js,Javascript,Json,Node.js,上面是我编写的一段代码,用于修改从api客户端调用获得的数据。 第一个api调用将生成一个json数据。我循环遍历该数据,从另一个api获取一个值,并附加到父级的json数据 console.log(data.data.cart\u items\u list[key].child.prodqty)行在我的日志中打印正确的值,但是console.log(data.data.cart\u items\u list)其中没有新添加的(child.prodqty)值 我对Node.js非常陌生,所以我不

上面是我编写的一段代码,用于修改从api客户端调用获得的数据。 第一个api调用将生成一个json数据。我循环遍历该数据,从另一个api获取一个值,并附加到父级的json数据

console.log(data.data.cart\u items\u list[key].child.prodqty)行在我的日志中打印正确的值,但是
console.log(data.data.cart\u items\u list)其中没有新添加的(child.prodqty)值

我对Node.js非常陌生,所以我不知道我做的是否正确

编辑:
如果I
console.log(data.data.cart\u items\u list)输出中包含prodqty。但它是这样来的
prodqty:[功能]

默认情况下,您可以说
data.data.cart\u items\u list
get
prodqty:[功能]
。如果您获得
prodqty
值,则需要在
data.data.cart\u items\u list
中设置该值,这样您就可以在循环后捕获它。我认为,我更喜欢在设置时创建一个新的var:

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);
                }

        })
我已经添加了一个对象prodqty。然后我用他的钥匙设置了prodqty。我认为这种代码结构可能有问题。api使用回调,然后当循环完成可能时,prodqty对象不设置值。要解决此问题,您需要在第二个api上传递回调或等待一段时间,直到第二个api完成:

 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);
                    }

                })

我知道
console.log(data.data.cart\u items\u list)不起作用。正确吗??在本例中使用:
console.log(JSON.stringify(data.data.cart\u items\u list))
@ErikLucio:实际上,新属性是附加到
data.data.cart\u items\u list
中的,但它没有所需的值您从异步函数返回时,使用回调或承诺,而且我没有看到
data.data.cart\u items\u list[key].child.prodqty
最初的调用
data.data.cart\u items\u list[key].child
没有
prodqty
。我正在尝试从第二个api调用添加它`console.log(data.data.cart_items_list[key].child.prodqty);'但这是在日志中打印正确的值。啊!现在我想我明白了你的问题:你可以访问
prodqty
。在第二个api中询问此值。您希望
prodqty
值位于循环后的
data.data.cart\u items\u list
中。它是正确的??我确实修改了我的第一个API,以包含我从第二个API调用中获得的值。因此我没有尝试您的答案。无论如何,感谢您宝贵的时间。当我有时间的时候,我会检查这个
setTimeout(function(){ console.log(JSON.stringify(prodqty)); }, 3000);` //3 seconds for example