【问题标题】:Population with any JS object in mongoose猫鼬中任何 JS 对象的填充
【发布时间】:2015-05-29 16:57:16
【问题描述】:

我有一个任意的 js 对象:

{
 createdBy : ObjectId('some_id'),
 project : ObjectId('some_id'),
 remarks : <string>
}

不属于任何架构。

我有两个收藏项目和用户。

假设在上面的 js 对象中,createdBy 字段应该是用户集合中文档的某个 ObjectId(在其架构中带有字段 username、fullName),项目字段应该是项目集合中项目文档的某个 ObjectId(带有字段键并在其架构中命名)。

现在上面的对象既不是架构也没有引用,

我想填充上面的对象以产生以下结果

{
 createdBy : {
    _id : ObjectIdOfRefUserDocument,
    username : 'username',
    fullName : 'users_full_name'
  },
  project : {
    _id : ObjectIdOfRefProjectDocument,
    name : 'project_name',
    key : 'project_key'
  },
  remarks : <some string>
}

如何以最简单的方式填充上述对象?

【问题讨论】:

    标签: mongodb mongoose


    【解决方案1】:

    您可以使用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.
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2015-09-21
      • 2020-07-25
      • 1970-01-01
      • 2014-07-24
      • 2014-11-25
      • 1970-01-01
      • 2013-01-13
      • 2021-08-16
      • 1970-01-01
      相关资源
      最近更新 更多