mongoose保存embedded的文件

我有以下架构:

var StorySchema = new Schema({ title: { type: String, required: true }, users: { id: { type: Schema.ObjectId, ref: 'Users' }, creator: { type: Boolean } }, maxlines: { type: Number, default: '10'}, lines: { text: { type: String }, entered_at: { type: Date }, user: { id: { type: Schema.ObjectId, ref: 'Users' } } }, created_date: { type: Date, default: Date.now }, updated_date: { type: Date, default: Date.now }, }) 

我想将数据推入lines并试图通过下面的更新:

  exports.update = function (req, res) { Stories .findOne({ _id: req.params.id }, function (err, story) { if (err) { res.json(200, { success: "false", message: err.message }) } else { story.maxlines = story.maxlines - 1 story.lines.push ({ text : req.body.text, 'user.id' : req.headers.id, entered_at : new Date().toISOString() }) story.save(function(err, story) { if (err) { res.json(200, { success: "false", message: err.message }) } else if (story) { res.json({ sucess: "true", message: story }) } }) } }) } 

我得到一个types错误的错误TypeError: Object { user: {} } has no method 'push' ,不完全确定如何更新行和与该行关联的用户

因为story.lines不是一个数组。 您可能需要更新架构来将这些行转换为Array:

 var LineSchema = new Schema({ text: { type: String }, entered_at: { type: Date }, user: { id: { type: Schema.ObjectId, ref: 'Users' } } }); var StorySchema = new Schema({ title: { type: String, required: true }, users: { id: { type: Schema.ObjectId, ref: 'Users' }, creator: { type: Boolean } }, maxlines: { type: Number, default: '10' }, lines: [LineSchema], created_date: { type: Date, default: Date.now }, updated_date: { type: Date, default: Date.now }, })