Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mongoose深度填充在第二级生成[Object]_Javascript_Node.js_Mongodb_Mongoose_Mongoose Populate - Fatal编程技术网

Javascript Mongoose深度填充在第二级生成[Object]

Javascript Mongoose深度填充在第二级生成[Object],javascript,node.js,mongodb,mongoose,mongoose-populate,Javascript,Node.js,Mongodb,Mongoose,Mongoose Populate,在花了一天时间试图把事情做完之后,我想是时候寻求帮助了 我想填充文档的两个级别 我试过使用populate(),但它似乎只适用于第一级,而不适用于深层填充!我在SO读了很多书,我知道它应该有用,但我觉得我错过了一些非常愚蠢的东西 请告诉我哪里出了错 以下是相关代码 模式 var compositionSchema = new Schema({ name: { type: String, required: true }, contribut

在花了一天时间试图把事情做完之后,我想是时候寻求帮助了

我想填充文档的两个级别

我试过使用populate(),但它似乎只适用于第一级,而不适用于深层填充!我在SO读了很多书,我知道它应该有用,但我觉得我错过了一些非常愚蠢的东西

请告诉我哪里出了错

以下是相关代码

模式

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);
保存在MongoDB中的实际文档

组成:

{
    "_id" : ObjectId("59e5db4595fe650a71fb0e07"),
    "name" : "Test Pop 7",
    "contributions" : [ 
        ObjectId("59e5db4595fe650a71fb0e05")
    ]
}
捐款:

{
    "_id" : ObjectId("59e5db4595fe650a71fb0e05"),
    "name" : "Honda",
    "media" : ObjectId("59e4ac5dacacd709eac2c856")
}
媒体:

{
    "_id" : ObjectId("59e4ac5dacacd709eac2c856"),
    "name" : "Logo_big.png",
    "width" : 662,
    "height" : 540
}
我的尝试(=错误代码?

在Node JS中,当我这样做时(根据文档):

打印此内容,而不实际填充媒体字段:

{ _id: 59e5db4595fe650a71fb0e07,
  name: 'Test Pop 7',
  contributions: 
   [ { _id: 59e5db4595fe650a71fb0e05,
       name: 'Honda',
       media: [Object] } ]
}

它是有效的,记住你问题中的关键词:印刷品。使用
console.log()
打印,它只显示数组中包含的文档的
类型(使用
typeof
进行检查),用于某些(第二)级别的嵌套。如果您这样做:

console.log(doc.contributions[0].media[0])
您将看到填充的
媒体
文档

console.log(doc.contributions[0].media[0])