【发布时间】:2015-02-01 20:48:10
【问题描述】:
我正在研究一个具有一对一和单向关联属性的模型。当我销毁该主模型的实例时,它是否也会销毁关联的实例?
如果没有,有什么方便的方法来做到这一点?
【问题讨论】:
我正在研究一个具有一对一和单向关联属性的模型。当我销毁该主模型的实例时,它是否也会销毁关联的实例?
如果没有,有什么方便的方法来做到这一点?
【问题讨论】:
目前 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 模型中执行相同的操作。
【讨论】: