gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 22:33:28 27 4
gpt4 key购买 nike

我试图找到一种方法,通过具有许多子项(食物)的父模型(菜单)从数据库中删除行。我只想删除某些行,而不是全部。
菜单.js

...
Menu.hasMany(models.Food, {
as: 'foods',
foreignKey: 'menuId',
sourceKey: 'id'
});
...
在我的 Controller 中,我尝试从菜单中删除某些食物。
...
const result = await menu.destroyFoods({
where: {
name: ['Pasta', 'Pizza']
}
});
...
我也尝试过单数 destroyFood 。对于两者,我都得到了 destoryFood/destoryFoods is not a function 。有没有什么简单的方法可以从 menu 的实例中做到这一点? Sequelize 的新手,希望得到一些帮助。谢谢。
谢谢

最佳答案

您可以使用 menu.removeFoods()menu.removeFood() - 有关更多信息,请参阅 Special methods/mixins added to instances: Foo.hasMany(Bar)
您还需要使用 Op.in query operatorFood.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'],
},
},
});

关于javascript - Sequelize - 从父实例中删除关联记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64506670/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com