小编Run*_*sis的帖子

使用 Sequelize upsert() 递增或递减值

在 Sequelize 中,我使用 upsert() 插入新行(如果不存在),或者将其字段值之一增加某个其他值(如果存在)。

插入工作正常,但当值更新时,它不会增加,而是完全更新

let x = 5;

OrderDetails.upsert({ 
   menuItemId: 1234, 
   orderId: 4321, 
   quantity: sequelize.literal((`quantity + ${x}`)
})
Run Code Online (Sandbox Code Playgroud)

这会产生以下查询:

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`);
Run Code Online (Sandbox Code Playgroud)

因此,例如,如果先前的值是10在查询之后,则更新后的值将5代替15

upsert()我的猜测是 Sequelize 在使用with时存在一种错误sequelize.literal()。显然,它仅在插入时被识别,而在更新时未被识别。

mysql node.js sequelize.js

5
推荐指数
1
解决办法
2875
查看次数

标签 统计

mysql ×1

node.js ×1

sequelize.js ×1