在创建新用户时未调用beforeCreate方法

时间:2015-02-23 08:04:41

标签: javascript node.js sails.js

我正在使用sailsjs version 0.11.0。我想在创建新用户时,必须先加密他们的密码,然后再将其存储到数据库中。为此,我正在使用bcrypt库。我在beforeCreate模型中添加了一个方法User.js,如下所示

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操作时调用它。

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

1 个答案:

答案 0 :(得分:2)

我看到人们最常见的错误是他们将调用放回到属性对象上(在本例中为beforeCreate)。

我会检查以确保它位于user.js文件中的模块导出对象

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