1
일을 마치려고 노력한 후 도움을 요청할 때라고 생각합니다.몽구스가 2 층에서 [개체]로 결과가
문서의 2 단계를 채우고 싶습니다.
나는 populate()로 시도했지만 첫 번째 레벨에서만 작동하고 깊이 채워지지는 않습니다! 나는 많이 읽었고 제대로 작동해야한다는 것을 알았지 만, 나는 정말 바보 같은 것을 놓치고 있다고 생각한다. ...
내가 실수하고있는 곳을 알려주기 바란다.
다음은 관련 코드입니다. 하여 MongoDB에 저장
스키마
var compositionSchema = new Schema({
name: {
type: String,
required: true
},
contributions: [{
type: Schema.Types.ObjectId,
ref: 'Contribution'
}]
});
mongoose.model('Composition', compositionSchema);
var contributionSchema = new Schema({
name: {
type: String,
required: true
},
media: {
type: Schema.Types.ObjectId,
ref: 'Media'
}
});
mongoose.model('Contribution', contributionSchema);
var mediaSchema = new Schema({
name: {
type: String,
required: true
}
});
mongoose.model('Media', mediaSchema);
실제 문서
조성물 :
{
"_id" : ObjectId("59e5db4595fe650a71fb0e07"),
"name" : "Test Pop 7",
"contributions" : [
ObjectId("59e5db4595fe650a71fb0e05")
]
}
기여 :
17,451,515,미디어 :
{
"_id" : ObjectId("59e4ac5dacacd709eac2c856"),
"name" : "Logo_big.png",
"width" : 662,
"height" : 540
}
내 시도 (? = 잘못된 코드) 노드 JS에서
, 나는 (문서 당)이 작업을 수행 할 때
Composition.findOne({ name: "Test Pop 7" })
.populate({
path: 'contributions',
model: 'Contribution',
populate: {
path: 'media',
model: 'Media',
}
})
.exec((error, doc) => {
if (error) { console.log(error); }
else {
console.log(doc);
}
});
인쇄를 실제로 미디어 필드를 채우지 않고 다음을 입력하십시오.
{ _id: 59e5db4595fe650a71fb0e07,
name: 'Test Pop 7',
contributions:
[ { _id: 59e5db4595fe650a71fb0e05,
name: 'Honda',
media: [Object] } ]
}