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

How to dynamically populate array of objects in mongoose?

我正在尝试在 mongoose 中动态填充对象数组。在我的用户模型上,我想要一个包含用户创建的所有 post 的数组。问题是我有多种类型的 posts.

不同的 post 型号:

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)

如何从我的数据库中获取用户并自动填充用户创建的 post?

我认为它应该起作用的乳清是这个,但由于某种原因它没有任何作用:

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

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