[英]Mongoose pre save middleware of subdocument not called on second save operation
我有一個帶有子文檔的mongoose模式。 父模式和子模式都具有預保存掛鈎。 例如:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var SubSchema = new Schema( { x : Number } );
SubSchema.pre('save', function (next) {
console.log("pre save Sub");
next();
});
var MainSchema = new Schema( { x : Number, children : [SubSchema] } );
MainSchema.pre('save', function (next) {
console.log("pre save Main");
next();
});
var Main = mongoose.model('Main', MainSchema);
var m = new Main();
m.children.push( { x : 42 } );
m.save( function(err, doc) {
console.log(doc +"\n\n");
doc.children[0].x = 43;
doc.save( function(err, doc2) {
console.log(doc2 + "\n\n");
});
});
當我運行此代碼時,我得到以下輸出:
pre save Sub
pre save Main
{ __v: 0,
_id: 50660b319aec895a50000002,
children: [ { x: 42, _id: 50660b319aec895a50000003 } ] }
pre save Main
{ __v: 0,
_id: 50660b319aec895a50000002,
children: [ { x: 43, _id: 50660b319aec895a50000003 } ] }
在第二次保存操作的子文檔沒有運行預保存掛鈎的任何原因?
這是在v3.2.0中修復的,允許你這樣做:
doc.children.set(0, {x: 43})
doc.save()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.