Sequelize-从父实例中删除关联记录



我正试图找到一种方法,通过具有许多子对象(食物(的父模型(菜单(从DB中删除行。不过,我只想删除某些行,而不是全部。

菜单.js

...
Menu.hasMany(models.Food, {
as: 'foods',
foreignKey: 'menuId',
sourceKey: 'id'
});
...

在我的控制器中,我有以下内容来尝试从菜单中删除某些食物。

...
const result = await menu.destroyFoods({
where: {
name: ['Pasta', 'Pizza']
}
});
...

我也试过单数destroyFood。对于两者,我都得到了destoryFood/destoryFoods is not a function。从menu的实例来看,有什么简单的方法可以做到这一点吗?新的续集,希望得到一些帮助。谢谢

感谢

您可以使用menu.removeFoods()menu.removeFood()-有关详细信息,请参阅添加到实例的特殊方法/混合项:Foo.hasMany(Bar(。

您还需要使用Op.in查询运算符为Food.name指定多个值。

const { Op } = require('sequelize');
const result = await menu.removeFoods({
where: {
name: {
[Op.in]: ['Pasta', 'Pizza'],
}
}
});

这相当于调用Food.destroy(),其中menuId等于先前结果中的menu.id

const results = await Food.destroy({
where: {
menuId: menu.id,
name: {
[Op.in]: ['Pasta', 'Pizza'],
},
},
});

相关内容

  • 没有找到相关文章

最新更新