如何为用户获取分页供稿,其中包含由其关注的用户创建的帖子?

时间:2019-06-18 23:02:09

标签: node.js mongoose pagination

我正在为一个应用程序开发一个nodejs后端,用户可以在其中查看他/她关注的用户创建的帖子。

我想用猫鼬来做。

我的userSchema:

const userSchema = new mongoose.Schema({
    name: {
        type: String,
        required: true
    },
    email: {
        type: String,
        required: true
    },
    hashed_password: {
        type: String,
        required: true
    },
    isVerified: {
        type:Boolean,
        default: false
    },
    emailVerificationToken: String,
    emailVerificationTokenExpires: Date,
    followers: [{ type: ObjectId, ref: 'User'}],
    following: [{ type: ObjectId, ref: 'User'}],
    posts: [{type: ObjectId, ref: 'Post'}],
    bio: String,
    website: String
});

我的postSchema:

const postSchema = new mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    url: {
        type: String,
        required: true
    },
    description: {
        type: String,
    },
    website: String,
    tags : [String],
    createdBy: { type: ObjectId, ref: 'User'}
});

我已经尝试过:

  User.findById(currentUserId)
    .populate("following","posts")
    .populate("following.posts","_id title")
    .skip()
    .limit()
    .exec(function(err,users){
      res.send(users);
    });

这将使分页的用户返回关注者,并填充其帖子。我只想要所有用户的帖子。有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

我认为您在userSchema中将拼写错误的帖子用作图钉。

您也正在吸引用户,相反,您应该获取所有包含该帖子的用户数据的帖子。

Post.find({})
    .populate("createdBy")
    .exec(function(err,users){
      res.send(users);
    });