如何使用sequelize按字符串进行自定义排序

问题描述 投票:0回答:1

如何使用sequelize进行自定义订单

我需要将从数据库检索的对象数组排序为

ACTIVE, PENDING, INACTIVE

如何使用sequelize

尝试过

sortOrder = [[Sequelize.literal(`CASE WHEN status=PENDING THEN 1 ELSE 0 ASC`)]];



reactjs node.js arrays object sequelize.js
1个回答
0
投票

要使用 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 的参数化查询。

© www.soinside.com 2019 - 2024. All rights reserved.