gpt4 book ai didi

node.js - 如何将订单信息传递给sequelize.js 原始查询?

转载 作者:太空宇宙 更新时间:2023-11-04 02:45:54 25 4
gpt4 key购买 nike

在 Sequelize 中,我可以使用

my_table.findAll({ order: [['datetime', 'desc']] }) 

查询数据并按列排序。但是当我尝试使用参数化原始查询时,例如:

var input_parameters = {order_column: 'datetime', order: 'desc'};

sequelize.query('select * from my_table order by :order_column :order', { replacements: input_parameters, type: models.sequelize.QueryTypes.SELECT });

它无法返回正确的顺序,因为 订单信息 asc/desc 在查询中被转义,最终准备好的查询类似于 'select * from my_table order by 'datetime' 'desc''。

有没有办法将订单信息传递给原始参数化查询?

最佳答案

这可能不是 Sequelize 方式,但是......如果:

let order_column = 'something';
let order = 'DESC';

sequelize.query(`select * from my_table order by ${order_column} ${order}`, { type: models.sequelize.QueryTypes.SELECT });

更新:这是正确答案

await sequelize.query(
'SELECT * FROM projects ORDER BY ? ?',
{
replacements: ['something', 'desc'],
type: QueryTypes.SELECT,
}
);

这种方式sequelize仍然可以保护你免受sql注入(inject)。

关于node.js - 如何将订单信息传递给sequelize.js 原始查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48425882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com