如何使用sequelize进行自定义订单
我需要将从数据库检索的对象数组排序为
ACTIVE, PENDING, INACTIVE
如何使用sequelize
尝试过
sortOrder = [[Sequelize.literal(`CASE WHEN status=PENDING THEN 1 ELSE 0 ASC`)]];
要使用 Sequelize 执行自定义订单,您可以在 Sequelize 查询中使用
order
选项。但是,您的示例中似乎存在一个小语法问题。您需要将 ASC
放在 CASE
语句之外。
这是更正的示例:
sortOrder = [
[Sequelize.literal(`CASE WHEN status='PENDING' THEN 1 ELSE 0 END`), 'ASC']
];
Model.findAll({
order: sortOrder,
// other options...
})
.then(results => {
console.log(results);
})
.catch(error => {
console.error(error);
});
在此示例中,
Sequelize.literal
用于将原始 SQL 注入查询中,允许您创建自定义排序。 CASE
语句用于根据 status
分配自定义订单值,然后在 ASC
语句之外应用 CASE
。
确保将
'PENDING'
替换为数据库中的实际值。另外,请记住 order
选项采用数组,因此您可以根据需要添加更多条件。
注意:在查询中使用原始 SQL 时要小心,以防止 SQL 注入漏洞。确保在处理用户输入时正确清理这些值或使用 Sequelize 的参数化查询。