node.js - Node-sqlite3 排序
问题描述
我正在编写一个网站以在 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与完全相同的查询一起使用时,结果将按应有的方式排序。
从节点-sqlite3
从数据库浏览器
我不知道这是否是 node-sqlite3 或其他问题的问题。如果这是 node-sqlite3 中的问题,是否有另一种方法可以在 javascript 中对结果进行排序?
解决方案
因此,我创建了一个排序函数,在运行查询并获得结果后立即对其进行排序。我将此问题报告给了 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
});
});
推荐阅读
- python - 根据 pandas 中的字典对数据帧的行进行分组并对相应的分子求和
- python-3.x - 导入无法解决 Pylance
- c++ - 销毁 std::vector 中的对象
- c# - 如何使用流利的断言断言集合中的所有项目都不同?
- pandas - 如何获得两只熊猫df的比例
- flutter - 是否可以在颤振(飞镖)列表中存储变量或函数值?
- azure-sql-database - 如何编辑 365 群组用户的 SQL 权限
- c# - 无法确定关系 - 实体框架核心
- git - 用于在 2 个站点上开发的 Git
- python - Plotly Express 条形图中具有不同组大小的组条