mongoose不能保存embedded的文件

我正在尝试在Mongo DB中创build一个embedded文档的文档。 文档的模型/架构如下所示:

var mongoose = require('mongoose'); var Schema = mongoose.Schema; // Cupboard Collection Schema var ShelfSchema = new Schema({ shelf_name: { type: String }, shelf_desc: { type: String } }); var CupboardSchema = new Schema({ cupboard_name: { type: String, required: true, unique: true }, cupboard_desc: { type: String, required: true }, shelf: [ShelfSchema] }, { timestamps: true }); module.exports = mongoose.model('Cupboard', CupboardSchema); 

该图显示了保存文档的代码。 代码保存文件

当我在控制台中打印“newCupboard”时,我以如下格式获取文档:

 { _id: 58e4b972931dc809f4127b0b cupboard_name: Cupboard A, cupboard_desc: Cupboard A Details, shelf: [ { shelf_name: Cupboard A, shelf_desc: Cupboard A Details, _id: 58e4c2742bfc0111dc47f149 }] } 

但执行后,embedded的文件没有得到保存,也没有显示错误。 最终结果如下所示:

 { _id: 58e4b972931dc809f4127b0b cupboard_name: Cupboard A, cupboard_desc: Cupboard A Details } 

任何人都可以帮我弄清楚,为什么embedded式文档没有得到保存在mongo数据库?

谢谢。

您不要将embedded式文档作为整个文档保存在另一个文档中。 您必须保存文档的_id,在获取logging时,您将在查询中调用populate()
所以,让我们假设您必须将文档保存在橱柜架构中,架构将如下所示 –

 var CupboardSchema = new Schema({ cupboard_name: { type: String, required: true, unique: true }, cupboard_desc: { type: String, required: true }, shelf: { type: Schema.Types.ObjectId, ref: 'ShelfSchema'} }, { timestamps: true }); 

现在,在“架子”上保存相应的文档,您要填充。 而当你将要获取文档,调用populate()像 –

 CupboardSchemaModel.find({_id: <some-id-you-want-to-fetch>}).populate('shelf');