我继承的一个项目是使用sequelize 6.12.5作为Express + MariaDB后端的一部分。当用户在前端更新任何数据时,数据库中的行将被复制,但新值与更新的现有行相反。
实际上,这是系统中存在此问题的特定部分的代码:
//Create Bulk Entries
const reportEntries = await ReportEntry.bulkCreate(entries, {
ignoreDuplicates: true,
updateOnDuplicate: ['input_section_id', 'input_item_id', 'quantity', 'input_const', 'total']
})
return res.status(201).json({ entries: reportEntries });
而ReportEntry模型的定义如下:
ReportEntry.init({
facility_id: DataTypes.INTEGER,
business_id: DataTypes.INTEGER,
input_section_id: DataTypes.INTEGER,
input_item_id: DataTypes.INTEGER,
input_const: DataTypes.DECIMAL(10,3),
quantity: DataTypes.DECIMAL(10,3),
total: DataTypes.DECIMAL(10,3),
is_offset: DataTypes.BOOLEAN,
year: DataTypes.INTEGER,
quarter: DataTypes.STRING
}, {
sequelize,
modelName: 'ReportEntry',
tableName: 'ch_report_entries',
underscored: true,
createdAt: 'created_at',
updatedAt: 'updated_at'
});
我已经通过了这里的续集文档,据我所知,一切看起来都很好,但它显然是不工作。
这段代码中是否缺少一些根本性的东西,或者我是否应该在故障诊断中寻找其他地方?
1条答案
按热度按时间k10s72fa1#
我可能是错的,但是忽略重复意味着sequelize不会抛出一个错误(如果不使用这个选项-或者“update on duplicate”选项-它会抛出一个错误)。在你的情况下,我会说你不应该使用这个选项。如果你的条目数组中有主键引用,它也不清楚如何创建新行...