Sails.js 具有强制一对多关系的级联错误
我使用的是Sails 1.1.0。我使用Sails.js 具有强制一对多关系的级联错误,sails.js,Sails.js,我使用的是Sails 1.1.0。我使用sails disk和sails mongo适配器尝试了以下操作 我创建了一个强制性的一对多关系。Sofa有所有者,这是一对多对用户,Sofa还有一个主页,这是一对多对主页。然而当我等待回家的时候。销毁(homeId)主页,它不会级联并删除沙发。相反,我得到了一个错误: PropagationError: Failed to run the "cascade" polyfill. Could not propagate the potential des
sails disk
和sails mongo
适配器尝试了以下操作
我创建了一个强制性的一对多关系。Sofa
有所有者
,这是一对多对用户
,Sofa
还有一个主页
,这是一对多对主页
。然而当我等待回家的时候。销毁(homeId)代码>主页,它不会级联并删除沙发。相反,我得到了一个错误:
PropagationError: Failed to run the "cascade" polyfill. Could not propagate the potential destruction of this home record.
Details:
Cannot wipe the contents of association (`sofas`) because there is one conflicting shame record whose `home` cannot be set to `null`. (That attribute is required.)
This error originated from the fact that the "cascade" polyfill was enabled for this query.
Tip: Try reordering your .destroy() calls.
[?] See https://sailsjs.com/support for more help.
以下是我的模型关联:
// api\models\Sofa.js
owner: {
model: 'user',
required: true
},
home: {
model: 'home',
required: true
},
// api\models\User.js
sofas: {
collection: 'sofa',
via: 'owner'
},
// api\models\Home.js
sofas: {
collection: 'sofa',
via: 'home'
},
有人知道为什么会发生这种情况吗?如果改用
.archive()
你会得到同样的结果吗?在你的config/locals/modals.js
中,你有没有cascadondestory:true
?你有没有解决过这个问题,看看casade的文档,它说“因此删除了一个具有双向复数关联的记录?”(一对多或多对多)还将干净地删除指向其他记录的所有链接(通过删除联接表行或将外键值设置为null)。我想冒昧地猜测一下,在您的情况下,它只是试图将Sofa中的外键设置为null,这会引发您的错误。虽然不理想,但您可以添加beforeDestroy生命周期回调来为您执行删除过程。我相信这是在sails版本<1时处理此问题的唯一方法。是的,因此进一步挖掘在Sails中,我相信它如我所想的那样工作,cascade正在尝试将沙发中的Home reference设置为null。我正在考虑另一个解决方案,您是否可以从沙发中的Home reference中删除required:true
,然后触发一个清理操作,删除所有Home reference为null的沙发。哈哈,我靠moto生活“如果它没有坏,修理它直到它坏为止”。