sails.js + waterline One-To-Many model association, what should happen when deleting the Many?

社会主义新天地 提交于 2019-12-01 02:41:29

问题


I have a one to many relation between Teacher(One) and Children(Many).

If I do:

Teacher.destroy(teacherId).exec(function(err){});

The children are not automatically removed.

Is it a bug or should I delete them manually? If that's not a bug, what is the explanation for not deleting children?


回答1:


Waterline currently doesn't support cascading deletes. It may be a configuration option in future versions, but it will probably never be the default. In most production-ready apps you probably should be doing soft-deletes anyway. In either case, you can get what you want by using the afterDestroy lifecycle callback.

In api/models/Teacher.js, something like:

module.exports = {
    attributes: {
       // attributes here
    },
    afterDestroy: function(destroyedRecords, cb) {
        // Destroy any child whose teacher has an ID of one of the 
        // deleted teacher models
        Child.destroy({teacher: _.pluck(destroyedRecords, 'id')}).exec(cb);
    }
}

You could do something similar with soft-deletes using the afterUpdate method.



来源:https://stackoverflow.com/questions/23483739/sails-js-waterline-one-to-many-model-association-what-should-happen-when-dele

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!