猫鼬填充参考列表
Mongoose populate list of references
猫鼬 (v3.8) + Node.js
我有一个名为 'Products' 的模型,它有这个字段:
upvoted_by: [{
user_id: { type: Schema.ObjectId, ref: 'Users' },
timestamp: { type: Date }
}]
而且 Users
模型还有很多其他字段。
要添加赞成票,我这样做:
product.upvoted_by.push({
user_id: req.user,
timestamp: new Date()
});
我正在尝试填充 upvoted_by.user_id
字段,以便它包含相应的用户数据。
我试过了,但似乎不起作用:
// product (= a document) has been found before
product.populate('upvoted_by.user_id', {
select: 'username' // username is a field in the Users model
}, function(err, doc) {
console.log(JSON.stringify(doc));
});
知道出了什么问题以及如何解决吗?
根据文档,以下语法应该有效,其中 select
是传递给 populate
方法的 Object
的属性。
product.populate({path:"upvoted_by.user_id",
select:"username"}).exec(function(err, doc) {
console.log(err);
console.log(JSON.stringify(doc));
});
我最终这样做了:
product.populate({
path: 'upvoted_by.user_id',
select: 'username profile.picture profile.name'}, function(err, doc) {
console.log(JSON.stringify(doc.upvoted_by));
});
猫鼬 (v3.8) + Node.js
我有一个名为 'Products' 的模型,它有这个字段:
upvoted_by: [{
user_id: { type: Schema.ObjectId, ref: 'Users' },
timestamp: { type: Date }
}]
而且 Users
模型还有很多其他字段。
要添加赞成票,我这样做:
product.upvoted_by.push({
user_id: req.user,
timestamp: new Date()
});
我正在尝试填充 upvoted_by.user_id
字段,以便它包含相应的用户数据。
我试过了,但似乎不起作用:
// product (= a document) has been found before
product.populate('upvoted_by.user_id', {
select: 'username' // username is a field in the Users model
}, function(err, doc) {
console.log(JSON.stringify(doc));
});
知道出了什么问题以及如何解决吗?
根据文档,以下语法应该有效,其中 select
是传递给 populate
方法的 Object
的属性。
product.populate({path:"upvoted_by.user_id",
select:"username"}).exec(function(err, doc) {
console.log(err);
console.log(JSON.stringify(doc));
});
我最终这样做了:
product.populate({
path: 'upvoted_by.user_id',
select: 'username profile.picture profile.name'}, function(err, doc) {
console.log(JSON.stringify(doc.upvoted_by));
});