Node.js中sqlite3查询结果如何转为普通JS数组而非对象数组
解决方案
你可以直接通过原生JS语法实现动态转换,无需引入第三方依赖,自己写一个通用转换函数即可,逻辑非常简单:
function convertSqliteResult(result) { // 空结果兜底,可根据自己的需求调整 if (!result) return [] // 处理all查询返回的对象数组(二维结果) if (Array.isArray(result)) { return result.map(row => Object.values(row)) } // 处理get查询返回的单个对象(一维结果) return Object.values(result) }
使用示例
你可以直接把这个函数套到你现有的查询逻辑里:
- 适配
get查询场景
loginAndDetails.get(`SELECT * FROM logTB` , (err,data) => { const formattedData = convertSqliteResult(data) console.log(formattedData) // 输出格式:['data1','data2',...,'dataN'] })
- 适配
all查询场景
loginAndDetails.all(`SELECT * FROM logTB` , (err,data) => { const formattedData = convertSqliteResult(data) console.log(formattedData) // 输出格式:[['data1','data2',...,'dataN'], ['data1','data2',...,'dataN']] })
注意事项
转换后的取值顺序和SQL查询返回的字段顺序完全一致:如果使用SELECT *查询,顺序和表结构定义的字段顺序相同;如果手动指定查询字段(如SELECT entry1,entry2 FROM logTB),则按你指定的字段顺序返回。
内容的提问来源于stack exchange,提问作者doc pinocchio
相关产品推荐
相关产品推荐

