【发布时间】:2014-07-15 23:13:45
【问题描述】:
我正在创建我的第一个猫鼬数据库应用程序。我正在尝试编写一个快速 API 调用,它返回一个包含来自两个文档的数据的对象。每当我调用 /data 路由时,我都会得到一个空数组。我添加了两条 console.log 行,输出为:
test2
test1
我可以做些什么来让 forEach 在返回结果之前完成?
代码如下:
router.route('/data')
//get all data
.get(function(req, res) {
var results = [];
Attendee.find(function(err, attendees) {
if (err) {res.send(err);}
else {
attendees.forEach(function(attendee) {
Message.find({userID: attendee._id}, function(err,messages){
results.push({
attendee: attendee,
messages: messages
});
});
console.log("test1");
console.log(results);
});
console.log("test2");
res.json(results);
}
});
});
这是我想要得到的结果
[ { attendee:
{ _id: 53c060e7fb90e3d709d6bdae,
fullName: ‘joe smith,
phoneNumber: '+555’,
__v: 0 },
messages:
[ { _id: 53c06887fb1d24fb095fd365,
phoneNumber: '+555',
body: ‘test’,
userID: '53c060e7fb90e3d709d6bdae',
sid: 'SMa86f2914986d4b04067d7f054da205a5',
__v: 0 },
{ _id: 53c41cf3d068393d17dc0dbf,
phoneNumber: '+555',
body: ‘test’,
userID: '53c060e7fb90e3d709d6bdae',
sid: 'SM4f6c64ca7b39e6caee9859e761a2850d',
__v: 0 },
{ _id: 53c421e16371e54f171751cf,
phoneNumber: '+555',
body: ‘test’,
userID: '53c060e7fb90e3d709d6bdae',
sid: 'SM1097eae33e4f53cdcdad32651c016437',
__v: 0 },
{ _id: 53c421e16371e54f171751d0,
phoneNumber: '+555',
body: ‘test’,
userID: '53c060e7fb90e3d709d6bdae',
sid: 'SM5a452e51c995d7ad6ad8f7b85cec80b0',
__v: 0 } ] } ]
【问题讨论】:
标签: javascript node.js express mongoose