Mongoose ODM,在保存之前更改variables

我想为我的用户文档创build一个带有Mongoose的模型层,它会:

  1. validation(唯一,长度)
  2. 规范化(用户名和电子邮件被转换成小写字母来检查唯一性)
  3. 盐生成
  4. 密码散列
  5. (logging)

所有这些操作都需要在执行db之前执行。 幸运的是,mongoose支持validation,插件和中间件。

坏事是我找不到有关这个问题的好材料。 mongoosejs.com上的官方文档太短

有没有人有关于与Mongoose(或一个完整的插件,如果存在的话)的预先操作的例子?

问候

       

网上收集的解决方案 "Mongoose ODM,在保存之前更改variables"

Schema.pre('save', callback)函数中, this是保存的文档,在调用next()之前对其进行的修改会改变保存的内容。

另一个select是使用Getters。 以下是网站的一个例子:

 function toLower (v) { return v.toLowerCase(); } var UserSchema = new Schema({ email: { type: String, set: toLower } }); 

http://mongoosejs.com/docs/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);