我目前正在运行Sails.js v.1.11.0和Waterline v.0.10.0b。
我有一个带有两个生命周期回调的用户模型,在我销毁用户时不会被调用。我尝试了user.destroy()
以及User.destroy(id)
。我应该以某种方式明确地调用那些afterDestroy
回调,还是应该使用某个设置激活它们?我的数据库是通过sails-mysql的MySQL。任何帮助将非常感谢!
用户模型
module.exports = {
tableName: 'user',
attributes: {
name: {
type: 'string',
required: true
},
lastName: {
type: 'string',
required: true
},
...
beforeDestroy: function(destroyedRecord, next) {
console.log('!!!!!destroyedRecord', destroyedRecord);
next();
},
afterDestroy: function(destroyedRecord, next) {
console.log('!!!!!destroyedRecord', destroyedRecord);
next();
},
toJSON: function () {
var obj = this.toObject();
delete obj.password;
return obj;
}
},
getFullName: function (user) {
return user.name + ' ' + user.lastName;
}
};
删除功能
remove: function (req, res, next) {
var id = req.param('id');
User.findOne({'id' : id}).then(function(user){
user.destroy();
res.send(200);
}).catch(function(err){
console.log(err);
res.send(400);
});
答案 0 :(得分:2)
回调在属性之外,在旁注上你可以将fullname放在属性中,如下所示。
module.exports = {
tableName: 'user',
attributes: {
name: {
type: 'string',
required: true
},
lastName: {
type: 'string',
required: true
},
fullName: function () {
return this.name + ' ' + this.lastName;
}
},
beforeDestroy: function(destroyedRecord, next) {
console.log('!!!!!destroyedRecord', destroyedRecord);
next();
},
afterDestroy: function(destroyedRecord, next) {
console.log('!!!!!destroyedRecord', destroyedRecord);
next();
},
toJSON: function () {
var obj = this.toObject();
delete obj.password;
return obj;
}
};