我需要进行 MongoDB 查询并为我的每个结果添加一个额外的字段。字段值取决于另一个查询的结果。
我正在尝试在我的server.js
代码中调用嵌套查询。它不起作用,因为res.json(data)
在修改数据元素之前调用。我怀疑有一种方法可以在我的代码中使用嵌套查询(或使用类似forEach
or的东西)来做我想做的事,但是我缺乏 JavaScript/Mongo 经验并没有让我找到一个好的解决方案。aggregate
db.js
任何帮助,将不胜感激。
服务器.js
app.get("/get_users_list", function(req, res) {
db.getUsersByCity(req.query.city, function(err, data) {
if (err) {
res.send(err);
} else {
for(var i in data) {
var rec = data[i];
db.checkVisitation({'user_id': req.query.user_id, 'friend_id': rec.user_id},
function(inner_err, inner_data) {
if (inner_data) {
rec["visited"] = "true";
} else {
rec["visited"] = "false";
}
});
}
res.json(data);
}
});
});
数据库.js
var checkVisitation = function(visitJSON, callback) {
db.visitations.findOne(visitJSON, callback);
}
var getUsersByCity = function(city, callback) {
db.users.find({'city': city}).toArray(callback);
}
编辑:
我能够通过在我的内部回调中添加一个检查来解决这个问题:
if (i == data.length - 1) {
res.json(data);
}