我想为我的用户文档创建一个带有猫鼬的模型层,它确实:
- 验证(唯一,长度)
- 规范化(用户名和电子邮件转换为小写以检查唯一性)
- 制盐
- 密码哈希
- (伐木)
操作都需要在保存到数据库之前执行。幸运的是,猫鼬支持验证、插件和中间件。
不好的是,我找不到任何关于这个主题的好材料。mongoosejs.com 的官方文档太短了...
有没有人有关于 Mongoose 预操作的示例(或者一个完整的插件,如果存在的话)?
问候
在Schema.pre('save', callback)
函数中,this
保存的文档,以及在调用之前对其进行的修改next()
更改保存的内容。
另一种选择是使用 Getters。以下是网站上的一个示例:
function toLower (v) {
return v.toLowerCase();
}
var UserSchema = new Schema({
email: { type: String, set: toLower }
});
https://mongoosejs.com/docs/tutorials/getters-setters.html
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);