embedded式mongoose文档主详细callback序列

我试图在一个子项目的预保存钩子做一些操作,但似乎从来没有被解雇。 我只拿到了主人的预存钩子。

我在Javascript模型

var mongoose = require('mongoose'); mongoose.connect("localhost","test_master_details"); var masterSchema = mongoose.Schema({ title:{type:String,required:true}, childs: [childSchema] }); masterSchema.pre('save',function(next){ console.log("master pre save called!"); console.log(this); next(); }); var childSchema = mongoose.Schema({ number:{type:Number}, name: {type:String,required:true} }); childSchema.pre('save',function(next){ this.number = 1; //set number with the total number of childs for the parent master console.log('child pre save called!'); console.log(this); next(); }); module.exports = [mongoose.model('Child',childSchema), mongoose.model('Master',masterSchema)]; 

我在咖啡脚本中的规格:

  model_container = require('../models/master') Master = model_container[1] Child = model_container[0] should = require('should') describe "Master model",-> before (done) -> Master.remove {},(err) -> console.log err if err done() it "should be able to create an instance",(done)-> master = new Master {title:"Master of command"} master.save (err) -> console.log err if err should.exist master done() it "should be able to add 1 child", (done)-> master= new Master {title:"Master of command"} master.childs.push {name:"hello world"} master.save (err) -> console.log err if err master.childs.length.should.eql 1 done() it "should be able to add 1 child with create method",(done) -> master = new Master {title:"Master of command"} child = new Child {name:"childs name"} master.childs.push child master.save (err) -> console.log err if err master.childs.length.should.eql 1 done() 

这里是我的规格结果孩子预存从未被称为:

  Master model ◦ should be able to create an instance: master pre save called! { title: 'Master of command', _id: 50322715672b424e11000001, childs: [] } ✓ should be able to create an instance ◦ should be able to add 1 child: master pre save called! { title: 'Master of command', _id: 50322715672b424e11000002, childs: [ { name: 'hello world' } ] } ✓ should be able to add 1 child ◦ should be able to add 1 child with create method: master pre save called! { title: 'Master of command', _id: 50322715672b424e11000003, childs: [ { name: 'childs name', _id: 50322715672b424e11000004 } ] } ✓ should be able to add 1 child with create method ✔ 3 tests complete (20ms) 

我错过了什么吗? 根据我的理解,只要孩子joincollections并保存后,孩子就可以救火。 我做错了什么? 我可以添加一个孩子的硕士学位收集和预设值根据主人的价值观?

谢谢你的帮助…

您需要在childSchema引用它之前定义childSchema ,因此请将其切换为:

 var childSchema = mongoose.Schema({ number:{type:Number}, name: {type:String,required:true} }); childSchema.pre('save',function(next){ this.number = 1; //set number with the total number of childs for the parent master console.log('child pre save called!'); console.log(this); next(); }); var masterSchema = mongoose.Schema({ title:{type:String,required:true}, childs: [childSchema] }); masterSchema.pre('save',function(next){ console.log("master pre save called!"); console.log(this); next(); });