Mongoose ODM,在保存之前更改变量

时间:2012-07-04 08:35:20

标签: node.js express mongoose odm

我想为我的用户文档创建一个带有Mongoose的模型层,其中包含:

  1. 验证(唯一,长度)
  2. 规范化(用户名和电子邮件转换为小写以检查唯一性)
  3. 盐生成
  4. 密码哈希
  5. (记录)
  6. 在持久保存到db之前,需要执行所有这些操作。幸运的是,mongoose支持验证,插件和中间件。

    糟糕的是我找不到关于这个主题的任何好材料。 mongoosejs.com上的官方文档太短了......

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

    此致

3 个答案:

答案 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 } 
});

http://mongoosejs.com/docs/getters-setters.html

答案 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);