如何在带有替换的 sequelize 查询中避免单引号?

Man*_*anu 5 javascript sql postgresql sequelize.js

我想使用 Sequelize 进行原始查询并使用替换来避免 sql 注入:

var sequelize = require('sequelize');
sequelize.query("SELECT * FROM table where name =:name ORDER BY :age:direction",
{replacements:{name:"test", age:"age", direction:"desc"}, type: sequelize.QueryTypes.SELECT })  
Run Code Online (Sandbox Code Playgroud)

这将转换为以下查询

SELECT * 
FROM table 
WHERE name = 'test' 
ORDER BY 'age' 'desc'  
Run Code Online (Sandbox Code Playgroud)

由于按列排序有单引号,方向也有单引号,postgres 抛出错误

谁能建议我如何通过替换就位来解决这个问题?

osk*_*rgg 1

作为解决方法,我分别创建了查询和排序顺序,然后按如下方式连接它们:

const query= `SELECT * FROM table where name =:name ORDER BY :age`;
let sortOrder = `DESC`
sequelize.query(`${query} ${sortOrder}`, {replacements:{name:"test", age:"age"}, type: sequelize.QueryTypes.SELECT })
Run Code Online (Sandbox Code Playgroud)

在那里只是为了玩sortORder