【问题标题】:Unexpected behavior with MongooseMongoose 的意外行为
【发布时间】:2013-10-04 17:54:46
【问题描述】:

意外行为

我有一些模型:

//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 次?

【问题讨论】:

  • 对子文档调用两次验证。为什么,我不知道,但至少这解释了为什么钩子也会被触发两次。

标签: javascript node.js mongodb validation mongoose


【解决方案1】:

我找到,回答我的问题(感谢 Aaron Heckmann)

在将预挂钩传递给父架构之前,将其添加到子架构。

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

【讨论】:

    猜你喜欢
    • 2017-01-10
    • 2014-12-16
    • 2021-08-28
    • 2020-10-04
    • 2016-07-16
    • 2016-05-10
    • 2020-07-23
    • 2021-08-23
    • 2021-11-16
    相关资源
    最近更新 更多