javascript - 创建新用户时未调用 beforeCreate 方法

标签 javascript node.js sails.js

我使用的是sailsjs 版本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)放在属性对象上。

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

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

关于javascript - 创建新用户时未调用 beforeCreate 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28669238/

相关文章:

javascript - 我如何在js中将变量替换为字符串

javascript - React JS 访问嵌套在状态中的数组

javascript - 使用 Redis 存储和获取 bool 值

mysql - 使用 NodeJS、MySQL 测量查询执行时间

javascript - 在 bash 脚本中执行 Node.js 文件

javascript - IE 挂起故障排除

javascript - [-1,1][+!!boolean_var] 的含义

JavaScript 堆栈 - Web 服务器和 API 服务器 : together or separate?

node.js - Sails.js 和 Mocha : Using supertest to create a new model

postgresql - sailspostgresql 使用 sails lift 命令时出错?