在测试模型创建之后,我注意到没有调用生命周期回调,在阅读Waterline的文档时我发现:
注意:在使用自定义适配器方法时,不使用Waterline的特性。您不再像使用定义的Waterline方法时那样获得生命周期回调和验证。
不过,我并没有故意使用自定义适配器方法,这是我在有关禁用生命周期回调的文档中找到的唯一参考。
配置/*中任何文件的标准/设置应该绝对确保生命周期回调不被禁用?
以下是我使用的唯一生命周期回调不被调用的模型的副本:
/**
* User.js
*
*/
var bcrypt = require('bcrypt');
module.exports = {
attributes: {
'email': {
type: 'email',
required: true,
unique: true
},
'username': {
type: 'string',
required: true,
unique: true,
minLength: 5,
maxLength: 16
},
'password': {
type: 'string',
required: true
},
'family': {
model: 'family'
},
'lastlogin': {
type: 'datetime',
defaultsTo: function() {return new Date().toISOString();}
},
beforeCreate: function(obj, cb) {
console.log("In beforeCreate");
bcrypt.hash(obj.password, 10, function(err, hash) {
if (err) {
console.log(err);
return cb(err);
}
obj.password = hash;
cb();
});
}
}
};`发布于 2015-02-17 23:20:57
您的回调需要在导出对象上,而不是属性。
/**
* User.js
*
*/
var bcrypt = require('bcrypt');
module.exports = {
attributes: {
'email': {
type: 'email',
required: true,
unique: true
},
'username': {
type: 'string',
required: true,
unique: true,
minLength: 5,
maxLength: 16
},
'password': {
type: 'string',
required: true
},
'family': {
model: 'family'
},
'lastlogin': {
type: 'datetime',
defaultsTo: function() {return new Date().toISOString();}
},
},
beforeCreate: function(obj, cb) {
console.log("In beforeCreate");
bcrypt.hash(obj.password, 10, function(err, hash) {
if (err) {
console.log(err);
return cb(err);
}
obj.password = hash;
cb();
});
}
};https://stackoverflow.com/questions/28569793
复制相似问题