2015-02-23 119 views
2

我正在使用sailsjs version 0.11.0。我希望在创建新用户时,必须对其密码进行加密,然后才能将其存储到数据库中。为此,我正在使用bcrypt库。我在User.js模型添加了一个方法beforeCreate像下面beforeCreate方法在创建新用户时未被调用

beforeCreate: function (values, next) { 
     if (!values.password || values.password != values.confimation) { 
      return next({ err: ["Password doesnt match password confirmation."] }); 
     } 
     console.log(values); 
     require('bcrypt').hash(values.password, 10, function passwordEncrypted (err, encryptedPassword) { 
      if (err) return next(err); 
      values.encryptedPassword = encryptedPassword; 
      // values.online = true; 
      next(); 
     }); 
    } 

问题是,当我创建一个新用户beforeCreate方法不会被调用,而应该在create动作被调用。

我在哪里犯错,我该如何解决?

回答

2

我看到的人最常见的错误是,他们把回调(在这种情况下beforeCreate)属性对象。

我会检查,以确保它是在模块的出口对象在user.js的文件

你需要检查的第二件事是,如果你有一个验证错误。如果您有验证错误,那么它也不会运行。我只能假设情况并非如此,因为如果用户未被创建,您的问题可能会有所不同。

+0

是的。我有属性对象上的beforeCreate。它应该存在于它之外,就像在module.exports中的属性对象的兄弟一样 – 2016-05-06 11:02:29

相关问题