Mongoose:在数组中填充对象的问题

Posted

技术标签:

【中文标题】Mongoose:在数组中填充对象的问题【英文标题】:Mongoose: issues populating an object in an array 【发布时间】:2016-04-23 05:25:47 【问题描述】:

我有以下三种型号:

var User = 
first_name: String,
last_name: String,


var Student = 
role = String,
user = type: mongoose.Schema.Types.ObjectId, ref: 'User'
groups = [type: mongoose.Schema.Types.ObjectId, ref: 'Group'],


var Group = 
name = String,
students = [type: mongoose.Schema.Types.ObjectId, ref: 'Student'],

我的快速获取方法如下:

router.route('/')
  .get(function(req, res)
    Group.find().populate('students').exec(function(err, groups)
      res.json(groups);
    );

我的 json 对象返回填充的学生对象数组,但我只从每个学生对象中接收一个 user._id。我怎样才能让用户对象填充?任何信息都会很棒!谢谢

【问题讨论】:

为什么在 Student 和 Group 对象中的键和值用“=”而不是“:”分开? 我的错误,只是一个错字。我在实际模型中使用了冒号:) 【参考方案1】:

您可以跨多个级别填充:

router.route('/')
  .get(function(req, res)
    Group
      .find()
      .populate(
        path: 'students',
        // Get the student's user ids
        populate:  path: 'user' 
      )
      .exec(function(err, groups)
        res.json(groups);
      );

您可以阅读更多关于它的信息here

【讨论】:

太棒了!谢谢你。它有效且易于理解! 感谢您的资源!我之前阅读过 mongoose 文档,但忽略了有关跨多个级别填充的部分。 很高兴能帮上忙。

以上是关于Mongoose:在数组中填充对象的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何从 mongoose 的 mongo 文档中返回一个数组?

猫鼬填充返回空数组

Mongoose 切片数组,在填充字段中

Mongoose - 无法在路径 notification.from 上使用排序填充,因为它是文档数组的子属性

Mongo - 如果子文档数组中的对象具有值,则添加字段

Mongoose 填充包含 ref 的对象数组