我想为我的用户文档创建一个带有Mongoose的模型层,其中包含:
在持久保存到db之前,需要执行所有这些操作。幸运的是,mongoose支持验证,插件和中间件。
糟糕的是我找不到关于这个主题的任何好材料。 mongoosejs.com上的官方文档太短了......
有没有人有一个关于使用Mongoose的预操作的例子(或者一个完整的插件,如果它存在的话)?
此致
答案 0 :(得分:33)
在Schema.pre('save', callback)
函数中,this
是要保存的文档,在调用next()
之前对其进行的修改会改变已保存的内容。
答案 1 :(得分:18)
另一个选择是使用Getters。以下是该网站的一个例子:
function toLower (v) {
return v.toLowerCase();
}
var UserSchema = new Schema({
email: { type: String, set: toLower }
});
答案 2 :(得分:13)
var db = require('mongoose');
var schema = new db.Schema({
foo: { type: String }
});
schema.pre('save', function(next) {
this.foo = 'bar';
next();
});
db.model('Thing', schema);