【发布时间】:2016-10-21 14:27:19
【问题描述】:
我已经为此苦苦挣扎了好几天。我正在尝试返回由 ID 列表引用的数据。
一个团队的 JSON 示例:
{
"Name":"Team 3",
"CaptainID":"57611e3431c360f822000003",
"CaptainName":"Name",
"DateCreated":"2016-06-20T10:14:36.873Z",
"Members":[
"57611e3431c360f822000003", //Same as CaptainID
"57611e3431c360f822000004" //Other members
]
}
路线如下:
router.route('/teams/:user_id')
.get(function (req, res) {
TeamProfile.find({
Members : {
$in : [req.params.user_id]
}
}).exec(function (err, teamProfiles) {
teamProfiles.forEach(function (teamProfile) {
UserProfile.find({
UserID : {
$in : teamProfile.Members.map(function (id) {
return id;
})
}
}, function (err, userProfiles) {
teamProfile.Members = userProfiles;
console.log(teamProfile); //will console log the remaining 2
})
.exec(function (err) {
res.json(teamProfile) //returns the first one only
})
})
});
})
这个想法是让路由仅通过使用 ID 来获取最新数据来返回配置文件。
但是,它在一定程度上发挥了作用。它获取用户信息和所有信息,但不返回代码中注释的所有团队 + 所有用户。总共有3支球队。只返回第一个。如果我删除 res.json(teamProfile) 它控制台会记录所有 3 个团队。我想返回所有 3 个团队。
【问题讨论】:
-
使用异步函数获取结果
标签: json node.js mongodb mongoose mean-stack