【发布时间】:2016-11-26 00:01:54
【问题描述】:
我的任务是使用 mongoose 修改现有(大型)node.js 网站。
架构有一个Question,它链接到Answer 的数组,如下所示:
var QuestionSchema = mongoose.Schema({
text: { type: String },
...
answers: [{type: mongoose.Schema.Types.ObjectId, ref: 'Answer'}],
...
});
var AnswerSchema = mongoose.Schema({
text: { type: String },
....
question: {
type: mongoose.Schema.ObjectId,
ref: Question
},
...
});
var Question = mongoose.model('Story', QuestionSchema);
var Answer = mongoose.model('Answer', AnswerSchema);
我找不到代码中正在使用的populate 方法的任何实例,但是对Question 文档的查询总是返回完整的answer 对象数组,而不仅仅是对象ID。这正是我们所需要的。
我现在必须将reaction 对象数组添加到answer。我使用了以下内容:
var Answer = mongoose.model('Answer', AnswerSchema);
var ReactionSchema = mongoose.Schema({
text: { type: String },
....
answer: {
type: mongoose.Schema.ObjectId,
ref: Answer,
//required: true
},
...
});
然后我将以下内容添加到 Answer 架构中:
reactions: [{type: mongoose.Schema.Types.ObjectId, ref: 'Reaction'}]
//where var Reaction = mongoose.model('Reaction', ReactionSchema);
我可以保存reaction 对象,当我检查answer 的数据库内容时,reaction 对象的类型和形式与question 中的answer 对象相同。
但是,当返回 question 文档时,answer.reaction 的每个元素仅包含 reaction 的对象 ID,而不是完整的 reaction 对象。我遗漏了什么或如何根据ref 类型进行查询以执行连接?
mongodb版本是3.2.9,mongoose是4.0.4。
【问题讨论】:
标签: mongodb mongoose mongoose-schema mongoose-populate