Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用MongoDB和Node.js在循环内迭代异步函数_Node.js_Mongodb - Fatal编程技术网

无法使用MongoDB和Node.js在循环内迭代异步函数

无法使用MongoDB和Node.js在循环内迭代异步函数,node.js,mongodb,Node.js,Mongodb,我无法在循环内调用mongoDB回调函数。我在下面提供我的数组和代码 [ { "location": "NEW DELHI", "nos_of_fos": 15, "login_id": [ "9619300317", "9619300343", "9619300338", "9619300351", "961930032

我无法在循环内调用mongoDB回调函数。我在下面提供我的数组和代码

[
    {
        "location": "NEW DELHI",
        "nos_of_fos": 15,
        "login_id": [
            "9619300317",
            "9619300343",
            "9619300338",
            "9619300351",
            "9619300322",
            "9619300316",
            "9619300323",
            "9619300328",
            "9619300341",
            "9619300309",
            "9619300310",
            "9619300329",
            "9619300353",
            "9619300356",
            "NORTH@oditeksolutions.com"
        ],

    },
    {
        "location": "North West Delhi",
        "nos_of_fos": 6,
        "login_id": [
            "9619300355"
        ],

    }
]
上面是我的输入数组

finalOut.forEach(function(listItem, index){
                    var remarkCount=0;
                    console.log('items',listItem['login_id']);
                    listItem['login_id'].forEach(function(item, index1){
                        Feedback.collection.countDocuments({login_id:item},function(cerr,cdocs){
                            if (!err) {
                                if (docs >0) {
                                    console.log('docsinner',cdocs);
                                    remarkCount+=parseInt(cdocs);
                                }
                            }
                        })
                    })
                    console.log('docsout',remarkCount);
                    finalOut[index]['total_remarks']=remarkCount;
                })

在这里,在完成mongoDB检查第一次迭代循环之前。在这里,我需要逐个检查login_id值,只有在完成mongoDB任务后,才会分配新的计数

使用承诺代替你能更新你的答案吗?请尝试this@AshokMandal:不,它没有按预期工作。@AshokMandal:您可以检查它。那里没有
total\u备注值。并且也没有执行控制台消息。在最终数组中没有
total_comments
值。
finalOut.forEach(function(listItem, index) {
  var remarkCount = 0;

  var promises = listItem['login_id'].map(function(item, index1) {
    return new Promise((resolve, reject) => {
      Feedback.collection.countDocuments({ login_id: item }, function(
        err,
        docs
      ) {
        if (!err) {
          if (docs > 0) {
            console.log('docsinner', docs);
            remarkCount += parseInt(docs);
          }
          resolve();
        }
        reject();
      });
    });
  });
  Promise.all(promises)
    .then(() => {
      finalOut[index]['total_remarks'] = remarkCount;
    })
    .catch(err => {});
});