在猫鼬中填充任何 JS 对象
Population with any JS object in mongoose
我有一个任意的 js 对象:
{
createdBy : ObjectId('some_id'),
project : ObjectId('some_id'),
remarks : <string>
}
不属于任何架构。
我有两个收集项目和用户。
假设在上面的 js 对象中,createdBy 字段应该是用户集合中文档的某个 ObjectId(其架构中包含字段用户名、全名),项目字段应该是项目集合中项目文档的某个 ObjectId(带有其架构中的字段键和名称)。
现在上面的对象不是模式也没有引用,
我想填充上面的对象以产生以下结果
{
createdBy : {
_id : ObjectIdOfRefUserDocument,
username : 'username',
fullName : 'users_full_name'
},
project : {
_id : ObjectIdOfRefProjectDocument,
name : 'project_name',
key : 'project_key'
},
remarks : <some string>
}
如何以最简单的方式填充上述对象。?
您可以使用 Model.populate
填充普通对象:
var obj = {
createdBy : ObjectId('some_id'),
project : ObjectId('some_id'),
remarks : <string>
};
User.populate(obj, { path: 'createdBy' }, function(err, obj) {
Project.populate(obj, { path: 'project' }, function(err, obj) {
// obj's createdBy and project fields are both populated.
});
});
我有一个任意的 js 对象:
{
createdBy : ObjectId('some_id'),
project : ObjectId('some_id'),
remarks : <string>
}
不属于任何架构。
我有两个收集项目和用户。
假设在上面的 js 对象中,createdBy 字段应该是用户集合中文档的某个 ObjectId(其架构中包含字段用户名、全名),项目字段应该是项目集合中项目文档的某个 ObjectId(带有其架构中的字段键和名称)。
现在上面的对象不是模式也没有引用,
我想填充上面的对象以产生以下结果
{
createdBy : {
_id : ObjectIdOfRefUserDocument,
username : 'username',
fullName : 'users_full_name'
},
project : {
_id : ObjectIdOfRefProjectDocument,
name : 'project_name',
key : 'project_key'
},
remarks : <some string>
}
如何以最简单的方式填充上述对象。?
您可以使用 Model.populate
填充普通对象:
var obj = {
createdBy : ObjectId('some_id'),
project : ObjectId('some_id'),
remarks : <string>
};
User.populate(obj, { path: 'createdBy' }, function(err, obj) {
Project.populate(obj, { path: 'project' }, function(err, obj) {
// obj's createdBy and project fields are both populated.
});
});