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中没有提供);