Javascript 如何在nodejs中等待查询结果以更新另一个查询结果

Javascript 如何在nodejs中等待查询结果以更新另一个查询结果,javascript,node.js,mongodb,asynchronous,geospatial,Javascript,Node.js,Mongodb,Asynchronous,Geospatial,要在当前用户数据中添加优惠查询数据,以返回用户已创建的优惠。作为响应,用户提供的信息总是空的 获取范围距离内的所有用户: // Execute Query and Return the Query Results query.exec(function(error, associate_users) { var array_users = new Array(); for (var i = 0; i < associate_users.

要在当前用户数据中添加优惠查询数据,以返回用户已创建的优惠。作为响应,用户提供的信息总是空的

获取范围距离内的所有用户:

   // Execute Query and Return the Query Results
   query.exec(function(error, associate_users) {
          var array_users = new Array();

          for (var i = 0; i < associate_users.length; i++) {
                var current_user = formatUser(associate_users[i], true);
                var user_id = current_user['user_id'];

                offers_controller.getUserOffers(user_id, latitude, longitude, distance, function(error, result_offers) {

                      current_user['offers'] = result_offers;
                      console.log(result_offers);
                      console.log(current_user); 
                       //Users logs show offers but in array there is no offers in api
          });
          array_users.push(current_user);
       }

       response.json({

           error: false,
           user: array_users,
            message:message.userListed
       });
 }); 
var query = offers.find({'type':'Point', offer_by:user_id});

// Execute Query and Return the Query Results
query.exec(function(error, result_offers) {

    if (error) {

        return callback(error, null);
    } else {

        var array_offers = new Array();
        for (var i = 0; i < result_offers.length; i++) {

            array_offers.push(formatOffers(result_offers[i]));
        }
        return callback(null, array_offers);
    }
});
//执行查询并返回查询结果
query.exec(函数(错误,关联用户){
var array_users=新数组();
对于(var i=0;i
在距离范围内获取关联用户的所有优惠:

   // Execute Query and Return the Query Results
   query.exec(function(error, associate_users) {
          var array_users = new Array();

          for (var i = 0; i < associate_users.length; i++) {
                var current_user = formatUser(associate_users[i], true);
                var user_id = current_user['user_id'];

                offers_controller.getUserOffers(user_id, latitude, longitude, distance, function(error, result_offers) {

                      current_user['offers'] = result_offers;
                      console.log(result_offers);
                      console.log(current_user); 
                       //Users logs show offers but in array there is no offers in api
          });
          array_users.push(current_user);
       }

       response.json({

           error: false,
           user: array_users,
            message:message.userListed
       });
 }); 
var query = offers.find({'type':'Point', offer_by:user_id});

// Execute Query and Return the Query Results
query.exec(function(error, result_offers) {

    if (error) {

        return callback(error, null);
    } else {

        var array_offers = new Array();
        for (var i = 0; i < result_offers.length; i++) {

            array_offers.push(formatOffers(result_offers[i]));
        }
        return callback(null, array_offers);
    }
});
var query=offers.find({'type':'Point',offer\u by:user\u id});
//执行查询并返回查询结果
exec(函数(错误、结果){
如果(错误){
返回回调(错误,空);
}否则{
var array_offers=新数组();
对于(变量i=0;i
您需要嵌套回调:

query.exec(function(error, associate_users) {
  if (error) {
    return callback(error, null);
  } else {
     //TODO Your users loop code
     query.exec(function(error, result_offers) {
       if (error) {
         return callback(error, null);
       } else {
         //TODO Combine the data however you need
         response.json({
           error: false,
           user: array_users,
           message: message.userListed
       });
    }
  }
});

现在还不清楚你到底在问什么问题。您能准确地说明您有什么问题以及需要帮助什么吗?在第一次查询中,根据位置给出所有th用户,然后我处理通过第一次查询返回的用户数组,并从另一个查询中获取与该用户相关的报价,但尝试将报价结果放入用户数组中的用户数据报价,该数组返回的响应为空。请帮助尝试理解…我只想返回用户数据中的报价,这是我处理第一个查询数据时第一次查询的结果,而报价是第二次查询的结果。@Nike我无法运行嵌套查询,因为用户来自用户控制器,而报价来自报价控制器报价。\u controller.getUserOffers(用户id、纬度、经度、距离、函数(错误、结果提供){current_user['offers']=result_offers;console.log(result_offers);console.log(current_user);//用户日志显示提供,但在数组中,API中没有提供);