2015-06-16 51 views
0

我使用的node.js服務器上mongoose.js連接到MongoDB的填充,我有一個貓鼬模型如下所示:無法獲得Mongoose.js 3級子文檔陣

var ItemSchema = new Schema({ 
    qtde: { 
     type: Number, 
     default: 0.0, 
     required: 'Digite a quantidade' 
    }, 
    detalhe: { 
     type: Schema.ObjectId, 
     ref: 'Detalhe' 
    }, 
    produto: { 
     type: Schema.ObjectId, 
     ref: 'Produto' 
    } 
}); 


var DetalheSchema = new Schema({ 
    dia: { 
     type: String, 
     default: '', 
     required: 'Digite o Dia do coffee' 
    }, 
    orcamento: { 
     type: Schema.ObjectId, 
     ref: 'Orcamento' 
    }, 
    itens: [{type: Schema.ObjectId, ref: 'Item' }] 
}); 

var OrcamentoSchema = new Schema({ 
    contato: { 
     type: String, 
     default: '', 
     required: 'Digite o nome do Contato', 
     trim: true 
    }, 
    curso: { 
     type: String, 
     default: '', 
     required: 'Digite o Curso', 
     trim: true 
    }, 
    dias: { 
     type: String, 
     default: '', 
     required: 'Digite os dias do curso', 
     trim: true 
    }, 
    inicio: { 
     type: String, 
     required: 'Digite a Data de Início' 
    }, 
    detalhes: [{type: Schema.ObjectId, ref: 'Detalhe'}] 
}); 

mongoose.model('Item', ItemSchema); 
mongoose.model('Detalhe', DetalheSchema); 
mongoose.model('Orcamento', OrcamentoSchema); 

我問題是我無法獲得orcamento.detalhes [n] .itens數組來填充或加載,它只是繼續顯示爲一個空數組。

回答

0

不支持嵌套的子文檔填充。

https://github.com/LearnBoost/mongoose/issues/601

做這將是填充第一級子文檔,然後遍歷所有檢索到的子文件,裏面填充他們唯一的出路。這裏需要注意的是,在內部這是用貓鼬填充作品的確切方式。

,或者您可以使用此 https://www.npmjs.com/package/mongoose-deep-populate

+0

感謝。我會測試貓鼬深度人口。 –

+0

一旦你完成測試,你能接受答案嗎? –

+0

當測試執行mogoose-deep-populate時,會發生以下錯誤:警告:檢測到可能的EventEmitter內存泄漏。 11重新連接偵聽器添加。使用emitter.setMaxListeners()來增加限制。 –