我正在研究一个具有一对一和单向关联的属性的模型。当我销毁该主模型的实例时,它是否也会破坏关联的实例?
如果没有,那么这样做的方便方法是什么?
答案 0 :(得分:1)
目前,Waterline不支持级联删除记录。
现在这样做的一种相对干净的方法是在模型中添加afterDestroy
钩子。
// Pet.js
module.exports = {
attributes: {
owner: {
model: 'person'
}
}
}
// Person.js
module.exports = {
attributes: {
pet: {
model: 'pet'
}
},
afterDestroy: function(deletedRecords, next) {
async.each(deletedRecords, function(person, cb) {
Pet.destroy({owner: person.pet}, cb);
}
], next);
}
}
afterDestroy
函数将在每次删除Person
条记录时运行。如果您希望在删除宠物时删除人员,则需要在Pet
模型中执行相同的操作。