【问题标题】:Node-sqlite3 sortingNode-sqlite3 排序
【发布时间】:2023-03-20 15:11:01
【问题描述】:

我正在编写一个网站以在 sqlite 数据库中进行搜索。我在后端使用 node-sqlite3,这是我的代码。

let query = `SELECT * FROM "main"."SPTOT" WHERE lower("Country") LIKE 'australia' ESCAPE '\\' ORDER BY Country, Operator, "Basic Type", Serial, Date`;
  db.all(query, (err, rows) => {    
    if (err) throw err;
    res.json({
      rows: rows,
      query: query
    });
  });

结果按日期排序,但应按国家、运算符、基本类型、序列号和日期排序。

当我将DB Browser for SQLite 与完全相同的查询一起使用时,结果按应有的方式排序。

来自 node-sqlite3

来自数据库浏览器

我不知道这是 node-sqlite3 的问题还是其他问题。如果这是 node-sqlite3 中的问题,是否有另一种方法可以在 javascript 中按照我想要的方式对结果进行排序?

【问题讨论】:

    标签: node.js sqlite


    【解决方案1】:

    所以,我创建了一个排序函数,在运行查询并获得结果后立即对其进行排序。我向 github 存储库报告了这个问题。 这是排序函数。

    function sort(array, keysInObj) {
      let elements = keysInObj.reverse();
      for (let e of elements) {
        array.sort((a, b) => `${a[e]}`.localeCompare(b[e]));
      }
      return array;
    }
    

    现在这是我的代码。

    let query = `SELECT * FROM "main"."SPTOT" WHERE lower("Country") LIKE 'australia' ESCAPE '\\' ORDER BY Country, Operator, "Basic Type", Serial, Date`;
    db.all(query, (err, rows) => {    
      if (err) throw err;
      rows = sort(rows, ["Country", "Operator", "Basic Type", "Serial", "Date"]);
      res.json({
        rows: rows,
        query: query
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-17
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2021-06-19
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多