【问题标题】:How to populate multilevel array in mongoose如何在猫鼬中填充多级数组
【发布时间】:2017-02-25 09:43:03
【问题描述】:

我有一个带有部分数组的测验模型,每个部分都有对问题的引用数组。 我想用问题填充测验。

测验模型

var quizSchema = new Schema({
    name: String,
    code: Number,
    creator: String,
    createdBy: { type: Schema.Types.ObjectId, ref: 'user' },
    section:[{
      title: String,
      questions: [{type: Schema.Types.ObjectId ,ref: 'question'}]
    }],
    createdOn: {type:Date, default:Date.now}
});

和问题模型

var questionSchema = new mongoose.Schema(
    {
      question: String,
      answer: [String],
      correct: Number,
      createdOn: {type:Date, default:Date.now}

    });

我已按照官方 mongoose 文档进行填充 http://mongoosejs.com/docs/populate.html#deep-populate

我的尝试

  quizSchema.find({_id: quiz_id})
.populate({
  path: 'section' ,
  populate: {
    path: 'section.questions',
    model: 'questionSchema'
  }
})
.exec( function (err, result)  {

  if (err) return done(err,null);
  console.log("list of questions are" + result);
  return done(err, result);

    });

  }

我得到的输出是问题 ID 列表,而不是实际问题。

{
  "status": "success",
  "message": "Quiz data",
  "result": [
    {
      "_id": "57fd5912ec0ad6bc8b67d71c",
      "name": "My Quiz",
      "creator": "foo",
      "__v": 0,
      "code": 124,
      "createdOn": "2016-10-11T21:26:42.774Z",
      "section": [
        {
          "_id": "57fd7e82c20a2fe5da3ed569",
          "questions": [
            "57fd7f8560e98fe710878820",
            "57fd7f9d60e98fe710878821",
            "57fd81408b20dae9108d347c",
            "57fd81408b20dae9108d347d",
            "57fd826aea5159ea5ff2f1a9",
            "57fd82ab0dbc0feaa753e50c",
            "57fd82efd789afeb0353f036",
            "57fd84b0fef6a2ed21fad5ae",
            "57fd84cc5dab10ed471bcaf5",
            "57fd84cd5dab10ed471bcaf6"
          ]
        },
        {
          "title": "next section",
          "_id": "57fff1e0f1913138c27e50a0",
          "questions": [
            "57fff242f1913138c27e50a1"
          ]
        }
      ]
    }
  ]
}

我认为我在填充字段方面做错了,但不确定。

【问题讨论】:

    标签: mongodb mongoose mongoose-schema mongoose-populate


    【解决方案1】:

    只需将您的查询更改为

     quizSchema.find({_id: quiz_id})
    .populate({
      path: 'section.questions'
    })
    

    【讨论】:

    • 完成。 “感谢反馈!声望低于 15 人的投票会被记录下来,但不要更改公众号”
    猜你喜欢
    • 2020-10-17
    • 2016-06-11
    • 2020-01-30
    • 2014-04-19
    • 1970-01-01
    • 2015-07-13
    • 2023-03-16
    • 1970-01-01
    • 2019-12-01
    相关资源
    最近更新 更多