beforeCreate方法在创建新用户时不会被调用

beforeCreate method is not being called upon creating new user

本文关键字:调用 用户 方法 创建 新用户 beforeCreate      更新时间:2024-04-19

我正在使用sailsjs version 0.11.0。我希望在创建新用户时,在将其存储到数据库之前,必须对其密码进行加密。为此,我使用bcrypt库。我在User.js模型中添加了一个方法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操作时被调用。

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

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

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

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