创建新用户时未调用 beforeCreate 方法
beforeCreate method is not being called upon creating new user
我正在使用 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)放在属性对象上。
我会检查以确保它在您的 user.js 文件中的模块导出对象上
您需要检查的第二件事是您是否有验证错误。如果您有验证错误,那么它也不会 运行。我只能假设情况并非如此,因为如果未创建用户,您的问题可能会有所不同。
我正在使用 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)放在属性对象上。
我会检查以确保它在您的 user.js 文件中的模块导出对象上
您需要检查的第二件事是您是否有验证错误。如果您有验证错误,那么它也不会 运行。我只能假设情况并非如此,因为如果未创建用户,您的问题可能会有所不同。