2013-10-01 103 views
0

意外行爲的意外行爲與貓鼬

我有一些模型:

//test.js 
var mongoose = require('../utils/mongoose'); 
var schema1 = new mongoose.Schema({ 
name: String 
}) 

var schema2 = new mongoose.Schema({ 
objectsArray: [schema1] 
}); 

schema1.pre('validate', function(next) { 
console.log('pre validate schema1'); 
next(); 
}); 

module.exports = mongoose.model('Schema2', schema2); 

確實省了:

var o = new require('test')({ objectsArray: [{ name: 'Alex' }] }); 
o.save(function(err){ 
console.log('saved'); 
}); 

後,在控制檯我得到:

pre validate schema1 
pre validate schema1 
saved 

的問題是,爲什麼? schema1.pre('validate') - 出現2次,但我期待1次?

+0

驗證在子文檔上被調用兩次。什麼,我不知道,但至少可以解釋爲什麼鉤子被觸發兩次。 – robertklep

回答

2

我發現,我的問題答案(THX亞倫的Heckmann)

它傳遞給父之前預掛鉤添加到子模式。

schema1.pre(..) 
schema2 = Schema({ array: schema1 })