【发布时间】:2021-06-29 09:06:10
【问题描述】:
在 Sequelize 中,如果新行不存在,我将使用 upsert() 插入新行,如果存在,则将其中一个字段值增加其他值。
插入工作正常,但是当值更新时,它不会增加而是完全更新
let x = 5;
OrderDetails.upsert({
menuItemId: 1234,
orderId: 4321,
quantity: sequelize.literal((`quantity + ${x}`)
})
这会导致以下查询:
INSERT INTO `OrderDetails` (`menuItemId`,`orderId`,`quantity`,`createdAt`,`updatedAt`) VALUES (?,?,quantity + 5,?,?)
ON DUPLICATE KEY UPDATE `menuItemId`=VALUES(`menuItemId`),`orderId`=VALUES(`orderId`),`quantity`=VALUES(`quantity`),`updatedAt`=VALUES(`updatedAt`);
因此,例如,如果之前的值是 10,那么在查询之后更新的值将是 5 而不是 15。
我的猜测是在使用upsert() 和sequelize.literal() 时,Sequelize 中存在一种错误。显然,它只在插入时被识别,在更新时不被识别。
【问题讨论】:
标签: mysql node.js sequelize.js