[英]Sails.js waterline ORM removing data from multiply models
假设我有2个模型。
用户和俱乐部。
为了简化我的问题,假设用户仅获得ID,而俱乐部获得了ClubId和UserId,因此一个俱乐部可以有许多不同的用户。
这是我的问题:
例如,当我删除ID为3的用户时,我还想从ID为3的俱乐部中删除所有用户。如何实现?
Sails目前尚不支持级联删除,但是您可以自己处理:
User.destroy({id:3}).exec(function(err, users) {
if (err) {return res.serverError();}
var userIds = users.map(function(user){return user.id;});
Club.destroy({user_id: userIds}).exec(function(err, clubs) {
// do something
});
});
destroy
返回所有已销毁对象的数组。 在您的情况下,由于您是按ID进行搜索的,因此(希望)仅返回一个,但是如果您使用的标准可以一次销毁多个用户,则仍然可以使用上述代码清除所有相关俱乐部。
删除任何模型后都可以获取afterDestroy事件。 简单的演示如下
在控制器中:
Company.destroy({id: 12346798})
.exec(function(e,r){
return res.json(r);
});
在Company.js模型中:
afterDestroy: function(destroyedCompany, cb) {
var ids = _.pluck(destroyedCompany, 'id');
if(ids && ids.length){
Department.destroy({company_id: ids})
.exec(function(e,r){
CompanyArticle.destroy({company_id: ids}).exec(cb);
});
}
else{
cb();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.