无法使用子文档投票填充用户

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();
  })
})