0
我的任务是使用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
,而不是完整reaction
对象的对象ID。我省略了什么或者如何根据ref
类型使查询执行连接?
mongodb版本是3.2.9,猫鼬是4.0.4。
感谢。你的回答给了我解决问题的线索。我的mongo版本根本没有填充方法。我花了更多的时间挖掘现有的代码,最终找到了从'question.answers'中存储的对象id手动检索'answer'对象的代码,然后将它们添加到返回的问题文档中。 –