如何在数组中的对象内填充对象?
How to populate an object inside an object in an array?
我目前正在用 mongoose 做一个项目,但我一直陷入 mongoose populate() 方法的问题。
问题是我无法在数组中的对象中填充对象。
// * I simplified the code below.
// Profile Document
Profile = model('Profile', new Schema({
_user: {
type: Schema.Types.ObjectId,
ref: 'User',
},
posts: [
{
type: Schema.Types.ObjectId,
ref: 'Post',
// Post = {
// _id: Number,
// _poster: {
// type: Schema.Types.ObjectId,
// ref: 'User',
// }
// };
},
],
}));
// app.js
const profile = await Profile.findOne({ _user: userId })
.populate('_user') // it works
.populate('posts') // it works too
.populate('posts._poster'); // it doesn't work
有什么方法可以在数组中填充嵌套对象吗?
如果你能回答我的问题就太好了。提前谢谢你。
我尝试正确访问符号以填充 *_poster*,但是,它仍然不起作用。代码如下。
const profile = await Profile.findOne({ _user: userId })
.populate('_user')
.populate('posts');
await profile.toObject();
profile.posts.forEach((post) => {
profile.populate('posts.post._poster');
})
我已经测试了你的模式,效果很好,你能测试一下并告诉我吗
const profile = await Profile.findOne({
_id: '5f108ed7ecc4881a6c35e27b',
})
.populate('_user')
.populate({
path: 'posts',
populate: {
path: '_poster',
model: 'User',
},
})
.exec();
console.log(profile);
我目前正在用 mongoose 做一个项目,但我一直陷入 mongoose populate() 方法的问题。
问题是我无法在数组中的对象中填充对象。
// * I simplified the code below.
// Profile Document
Profile = model('Profile', new Schema({
_user: {
type: Schema.Types.ObjectId,
ref: 'User',
},
posts: [
{
type: Schema.Types.ObjectId,
ref: 'Post',
// Post = {
// _id: Number,
// _poster: {
// type: Schema.Types.ObjectId,
// ref: 'User',
// }
// };
},
],
}));
// app.js
const profile = await Profile.findOne({ _user: userId })
.populate('_user') // it works
.populate('posts') // it works too
.populate('posts._poster'); // it doesn't work
有什么方法可以在数组中填充嵌套对象吗?
如果你能回答我的问题就太好了。提前谢谢你。
我尝试正确访问符号以填充 *_poster*,但是,它仍然不起作用。代码如下。
const profile = await Profile.findOne({ _user: userId })
.populate('_user')
.populate('posts');
await profile.toObject();
profile.posts.forEach((post) => {
profile.populate('posts.post._poster');
})
我已经测试了你的模式,效果很好,你能测试一下并告诉我吗
const profile = await Profile.findOne({
_id: '5f108ed7ecc4881a6c35e27b',
})
.populate('_user')
.populate({
path: 'posts',
populate: {
path: '_poster',
model: 'User',
},
})
.exec();
console.log(profile);