Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.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
Node.js NodeJ在循环结束后查找循环结果的内部查询 var user\u id='98-XXXXXXXX' Contact.find({user\u id:user\u id}) .exec(函数(错误、结果){ 如果(错误){ 返回下一个(错误); } var finalArray=[]; 对于(var i=0;i_Node.js_Mongodb_Mongoose_Mongoose Schema - Fatal编程技术网

Node.js NodeJ在循环结束后查找循环结果的内部查询 var user\u id='98-XXXXXXXX' Contact.find({user\u id:user\u id}) .exec(函数(错误、结果){ 如果(错误){ 返回下一个(错误); } var finalArray=[]; 对于(var i=0;i

Node.js NodeJ在循环结束后查找循环结果的内部查询 var user\u id='98-XXXXXXXX' Contact.find({user\u id:user\u id}) .exec(函数(错误、结果){ 如果(错误){ 返回下一个(错误); } var finalArray=[]; 对于(var i=0;i,node.js,mongodb,mongoose,mongoose-schema,Node.js,Mongodb,Mongoose,Mongoose Schema,EndedHere[]首先出现的是空的,之后我得到了login.find查询的结果,这是正确的。经过所有的计算,你知道如何得到最后的结果吗。 提前感谢因为函数在循环中返回承诺,所以代码执行必须等到所有这些承诺都得到解决。考虑使用承诺。所有或承诺。MAP>代码>等待。 如前所述,这样的结构不会返回结果,而是在中间函数或对象完成之前返回它们,因为nodejs不知道应该先等待结果 var user_id = '98-XXXXXXXX' Contact.find({user_id: user_id})

EndedHere[]首先出现的是空的,之后我得到了login.find查询的结果,这是正确的。经过所有的计算,你知道如何得到最后的结果吗。
提前感谢

因为函数在循环中返回承诺,所以代码执行必须等到所有这些承诺都得到解决。考虑使用<代码>承诺。所有或<代码>承诺。MAP>代码>等待。 如前所述,这样的结构不会返回结果,而是在中间函数或对象完成之前返回它们,因为nodejs不知道应该先等待结果

var user_id = '98-XXXXXXXX'

Contact.find({user_id: user_id})
.exec(function (err, results) {
  if (err) { 
    return next(err); 
  }
    var finalArray = [];
    for(var i = 0; i< results[0].Total; i++) {

      if(results[0].Contacts[i].name != "SPAM") {

       for(var j = 0; j < results[0].Contacts[i].phoneNumbers.length; j++){

           var number = results[0].Contacts[i].phoneNumbers[j].number
           number = number.replace(/ /g,'');
            var user_id = number.substr(number.length - 10); 

                Login.find({user_id:user_id})
                .exec(function(err,results) {
                if(err) {
                return next(err); }

                    var intCount = results.length;
                        if (intCount > 0)
                        {
                            console.log('called')
                            finalArray.push(results[0])
                            console.log(finalArray)
                        } 
               });

            }
         }

        //console.log(i,results[0].Total - 1);
        //if(i == results[0].Total - 1)



    } 
                    console.log('Ended Here',finalArray)
                    var responseTosend = {"message":finalArray,"user_id":user_id}
                    return  res.send(responseTosend);

});

我是nodeJS的新手,你能给我一段代码作为参考吗
const x = [1,2,3]
let results = []

for (let i = 0; i < x.length; i++){
  results.push(someAsyncJobLikeADatabaseCall(x[i]))
}

// this will not return the results, but the intermediate async objects/functions
console.log(results)
const x = [1,2,3]
let results = []

async function getAsyncResults(array){
  // map returns an array, this time, an array of promises
  const promises = x.map(number => someAsyncJobLikeADatabaseCall(number))
  // Promise.all resolves, if all promises in the array have been resolved
  return Promise.all(promises)
}

try {
  let results = await getAsyncResults(x)
  // this will return the results you expect.
  console.log(results)
} catch (err) {
  console.log('Some error', err)
}