如何使用 Mongoose 和 MongoDB 在引用中填充引用

How can I populate a reference within a reference with Mongoose and MongoDB

我有包含评论参考的帖子,评论有用户参考。我想创建一种方法,让用户发表评论。

    Post: [comment_id, comment_id]
    Comment: [user_id]

以下是我目前的情况:

postRouter.get('/:postId/comments', (req, res, next) => {
  Post.findOne({ _id: req.params.postId })
    .populate('comments')
      // this does not work
    .populate('comments.user')
    .exec((err, comments) => {
      if (err) {
        res.status(500);
        return next(err);
      }
      return res.status(200).send(comments);
      // returns
      // { 
      // "_id": "1234567", 
      // "comments": [ { "_id": "891011", "body": "hello world", "user": "456789" }]
      //  }
    });
});

如前所述,我在哪里获得“用户”,我想用用户文档填充它。这可能吗?

是的,这是可能的。你可以这样做:

Post.findOne({ _id: req.params.postId }).populate([
  { 
    path: 'comments', 
    populate: [{ path: 'user' }] 
  }
]);