NodeJS下使用SQLite3如何将JOIN关联查询结果转为嵌套数组结构
解决方案
完全可以通过 SQLite 实现,不需要切换到非关系型数据库。SQLite 从 3.9.0 版本开始内置了 JSON 序列化相关函数,你要的嵌套结构可以通过json_object和json_group_array两个函数组合实现。
可用查询语句如下:
SELECT t1.id AS fk, t1.value1, t1.value2, json_group_array( json_object( 'id', t2.id, 'value1', t2.value1, 'fk', t2.fk ) ) AS result FROM table1 t1 INNER JOIN table2 t2 ON t2.fk = t1.id WHERE t1.id = 1 GROUP BY t1.id, t1.value1, t1.value2;
后续处理说明
Node.js 的 sqlite3 包返回的查询结果中,result 字段默认是 JSON 字符串,你只需要对该字段执行一次JSON.parse()即可得到你期望的嵌套数组结构。
如果你不想手动做序列化处理,也可以使用支持关联关系配置的 ORM 库,配置table1和table2的一对多关联后,查询时添加关联查询参数就能直接返回完全符合你要求的 JS 对象。
内容的提问来源于stack exchange,提问作者J.F.
相关产品推荐
相关产品推荐

