首页 > 解决方案 > 将原始批量更新查询与 Sequelize 一起使用

问题描述

我想将这种类型的请求与 sequelize 一起使用,以便在一个请求中进行大量更新(出于性能原因):

UPDATE employee
SET address = new.address,
name = new.name
from (values :updateStack) AS new(address, name, employeeId)
WHERE employee.id = new.employeeId

这是 的值updateStack

[{
    address: 'France',
    name: 'Chris',
    employeeId: 21
}, {
    address: 'UK',
    name: 'Steve',
    employeeId: 42
}]

我不确定 sequelize 如何正确解析 updateStack 数组。任何的想法 ?

此 SQL 查询运行良好:

UPDATE employee
SET address = new.address,
name = new.name
from (values ('France', 'Chris', 21), ('UK', 'Steve', 42)) AS new(address, name, employeeId)
WHERE employee.id = new.employeeId

谢谢你,有一个美好的一天。

标签: node.jssequelize.js

解决方案


我发现了怎么做!

sequelize.query(
            `
                UPDATE employee
                SET address = new.address,
                name = new.name
                from (values ?) AS new(address, name, employeeId)
                WHERE employee.id = new.employeeId
            `,
            {
                replacements: [['France', 'Chris', 21], ['UK', 'Steve', 42]],
                type: models.models.sequelize.QueryTypes.INSERT
            }
    )

推荐阅读