如何动态填充猫鼬中的对象数组?

时间:2019-07-18 10:07:34

标签: node.js mongodb mongoose mongoose-schema mongoose-populate

我正在尝试动态填充猫鼬中的对象数组。在我的用户模型上,我想要一个包含用户发布的所有帖子的数组。问题是我有多种类型的帖子。

不同的帖子模型:

const ImagePost = mongoose.model('ImagePost', new Schema({ url: String }))

const TextPost = mongoose.model('TextPost', new Schema({ text: String }))

我的用户模型如下:

const userSchema = new Schema({
    userName: {
        type: String,
        required: true
    },
    posts: [{
        postId: {
            type: Schema.Types.ObjectId,
            required: true,
            refPath: "postModel"
        },
        postModel: {
            type: String,
            required: true,
            enum: ['ImagePost', 'TextPost']
        }
    }]
})

const User = mongoose.model('User', userSchema)

如何从数据库中获取用户并自动填充用户发表的帖子?

我认为它应该起作用的乳清是这样,但是由于某种原因它什么也没做:

User.findById('5d302c7caf1b8906ccb611b6').populate('posts.postId')

1 个答案:

答案 0 :(得分:1)

refPathpostModel更改为posts.postModel可能会解决您的问题。