javascript – Mongoose预存在第二次保存操作时未调用的子文档中间件

前端之家收集整理的这篇文章主要介绍了javascript – Mongoose预存在第二次保存操作时未调用的子文档中间件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有子文档的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,children: [ { x: 43,_id: 50660b319aec895a50000003 } ] }

在第二次保存操作的子文档没有运行预保存挂钩的任何原因?

解决方法

这是在v3.2.0中修复的,允许你这样做:
doc.children.set(0,{x: 43})
doc.save()
原文链接:https://www.f2er.com/js/151412.html

猜你在找的JavaScript相关文章