如何显示所有引用登录用户的帖子?

时间:2018-10-01 11:24:24

标签: node.js mongodb express mongoose passport.js

我试图了解Mongoose的填充功能,到目前为止,我对可用资源和docs感到困惑。

基本上,我有一个如下的架构安排,并且我试图在用ejs呈现的页面上显示所有引用给用户的帖子。

var UserSchema = new Schema ({
    username: String,
    password: String,
    posts: [
        {
        type: mongoose.Schema.Types.ObjectId,
        ref: "Post"
        }
    ]
});


var PostSchema = new Schema ({
Title: String, 
Content: String, 
author: {
    type: mongoose.Schema.Types.ObjectId,
    ref: 'User',

}
});

我已经设置了护照/会议,因此我可以获取当前用户的ID。使用此ID,我想显示所有用户的帖子。我已经坚持了几个小时,并尝试了各种教程和不同的方法,请有人让我摆脱痛苦!我应该如何处理?

1 个答案:

答案 0 :(得分:0)

尝试首先将用户与ids列表(activeUserIds)匹配,然后在获取的记录中填充postsauthor字段。

await User.find({'_id': {$in: [activeUserIds]}})
  .populate({
    path: 'posts',
    model: 'Post',
    populate: ({
      path: 'author',
      model: 'User'
    })
  });