如何在猫鼬中动态填充对象数组?
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')
将您的 refPath
从 postModel
更改为 posts.postModel
可能会解决您的问题。
我正在尝试在 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')
将您的 refPath
从 postModel
更改为 posts.postModel
可能会解决您的问题。