无法使用子文档投票填充用户
Unable to populate user with subdocument polls
我有两个模型 User 和 Poll。在我的路线中,我有一个参数,它从路线中获取 :userId
并将用户带到 return。
目前 return 秒
{
"_id": "599db6cff368b504ea355781",
"hash": "3010661bdf06e640f12d99c1b0549ac4a36f785a25dd02ed51d1f67dc9fb7048d3869a3d906aeb64825879c0dcded91f13feed5408687866e194439fa15a50a8",
"salt": "9b53655d0a2c65b1b6ab499c76f91f3e",
"email": "rawledjuglal@gmail.com",
"username": "rawlejuglal",
"__v": 3,
"pollsVoted": [],
"pollsCreated": [
"599db6d9f368b504ea355782",
"599db6e7f368b504ea355783",
"599db6f4f368b504ea355784"
]
}
我希望它用投票数据填充 user.pollsCreated
而不仅仅是 ID。我试着关注 http://mongoosejs.com/docs/populate.html but I'm not sure if it is different with query instead of model.find. The link is to gist of relevant files. https://gist.github.com/RawleJuglal/db3bad809edfbfdd7d4da4edaebc5bd3
我将 post 我找到的解决方案。我的要点在引用 'Post' 而不是 'Poll' 的用户模型中确实有一个拼写错误,但是如果您在 router.param 中使用查询,我将保留代码以正确使用 populate 以防有人来找答案。
router.param('user_id', function(req, res, next, id){
var query = User.findOne({_id:id});
query.populate('pollsCreated').exec(function(err, user){
if(err){return next(err)}
if(!user){return next(new Error('can\'t find user'))}
req.user = user;
next();
})
})
我有两个模型 User 和 Poll。在我的路线中,我有一个参数,它从路线中获取 :userId
并将用户带到 return。
目前 return 秒
{
"_id": "599db6cff368b504ea355781",
"hash": "3010661bdf06e640f12d99c1b0549ac4a36f785a25dd02ed51d1f67dc9fb7048d3869a3d906aeb64825879c0dcded91f13feed5408687866e194439fa15a50a8",
"salt": "9b53655d0a2c65b1b6ab499c76f91f3e",
"email": "rawledjuglal@gmail.com",
"username": "rawlejuglal",
"__v": 3,
"pollsVoted": [],
"pollsCreated": [
"599db6d9f368b504ea355782",
"599db6e7f368b504ea355783",
"599db6f4f368b504ea355784"
]
}
我希望它用投票数据填充 user.pollsCreated
而不仅仅是 ID。我试着关注 http://mongoosejs.com/docs/populate.html but I'm not sure if it is different with query instead of model.find. The link is to gist of relevant files. https://gist.github.com/RawleJuglal/db3bad809edfbfdd7d4da4edaebc5bd3
我将 post 我找到的解决方案。我的要点在引用 'Post' 而不是 'Poll' 的用户模型中确实有一个拼写错误,但是如果您在 router.param 中使用查询,我将保留代码以正确使用 populate 以防有人来找答案。
router.param('user_id', function(req, res, next, id){
var query = User.findOne({_id:id});
query.populate('pollsCreated').exec(function(err, user){
if(err){return next(err)}
if(!user){return next(new Error('can\'t find user'))}
req.user = user;
next();
})
})