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'對象的代碼,然後將它們添加到返回的問題文檔中。 –