我正在尝试编写一个种子文件down
,我想bulkDelete
我在up
中创建的数据。但我找不到有关如何执行此操作的任何文档。官方文档没有给出一个例子:http://docs.sequelizejs.com/class/lib/query-interface.js~QueryInterface.html#instance-method-bulkDelete
有人可以告诉我如何bulkDelete
表Foo
中name
等于x
或名称等于y
的所有行?
down: (queryInterface, Sequelize) => {
return queryInterface.bulkDelete('Foo', [what do I put here?], {});
}
答案 0 :(得分:14)
我尝试使用@Michael McCabe的建议并继续ERROR: Invalid value [object Object]
。一旦我从第二个参数(标识符参数)中删除where
,我就能够使它工作:
down: (queryInterface, Sequelize) => {
const Op = Sequelize.Op
return queryInterface.bulkDelete('users', {id: {[Op.in]: [2, 3]}}, {})
}
答案 1 :(得分:9)
down: (queryInterface, Sequelize) => {
const Op = Sequelize.Op;
return queryInterface.bulkDelete(
'Foo',
{[Sequelize.Op.or]: [{name: x}, {name: y}]}
);
}
第一个arg是表名,第二个arg是where
值,表示要删除的行。
答案 2 :(得分:0)
这里的其他两个答案都不适合我。我在 Sequelize GitHub 问题讨论中偶然发现了以下答案,但效果很好:
https://github.com/sequelize/sequelize/issues/5615#issuecomment-248384147
注意'keyword'是列名,'Flags'是表名:
down: function (queryInterface, Sequelize) {
return queryInterface.bulkDelete('Flags', {
keyword: [
"groupRegistration",
"memberRegistration",
"exhibitorRegistration",
"facilitatorRegistration",
"volunteerRegistration",
"workshopSignup"
]
});
}