我可以从节点中的 sqlite3 数据库中获取数组而不是 JSON 数组的结果吗?
Posted
技术标签:
【中文标题】我可以从节点中的 sqlite3 数据库中获取数组而不是 JSON 数组的结果吗?【英文标题】:Can I get the result in a Array instead of JSON array from sqlite3 database in node? 【发布时间】:2021-11-15 20:05:29 【问题描述】:我真的很陌生,我刚刚掌握了 json 数据,我希望它是一个常规数组
loginAndDetails.get(`SELECT * FROM logTB` , (err,data) =>
console.log(data)
)
//output might be 1d or 2d
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
loginAndDetails.all(`SELECT * FROM logTB` , (err,data) =>
console.log(data)
)
// alternative output:
[
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
,
entry1: 'data1',
entry2: 'data2',
.,
.,
entryN: 'dataN'
]
但是我已经创建了我所有的函数来使用普通函数 像这样的JS数组
['data1','data2',...,'dataN']
(or)
[['data1','data2',...,'dataN'],
['data1','data2',...,'dataN']]
所以有没有办法动态转换所有数据,因为有时它可能是一个二维数组,有时它可能是一个一维数组并且可能有“n”个对象
我必须创建一个函数来构建它还是有任何其他方法
【问题讨论】:
【参考方案1】:你可以这样做,它会给你一个数组数组。
var finalResult = [];
// checking if data is an array of objects
if (Array.isArray(data))
for (var i=0; i < data.length; i++ )
console.log(data[i]);
var result = getFlatArray(data[i]);
finalResult.push(result);
console.log(finalResult);
else
finalResult = getFlatArray(data);
console.log(finalResult);
function getFlatArray(data)
var result = [];
for(var j in data)
result.push([data[j]]);
return result;
但如果您想访问您的 JSON 对象,您可以执行以下操作。]
对于 1d:- data.entry1
对于 2d:- data
只是一个 javascript 数组,因此您可以使用普通循环遍历它并使用数组索引访问循环内的对象。
for(var i=0; i < data.length; i++)
// access the data in the loop using array index
data[i].entry1;
【讨论】:
以上是关于我可以从节点中的 sqlite3 数据库中获取数组而不是 JSON 数组的结果吗?的主要内容,如果未能解决你的问题,请参考以下文章
iPhone Core Data 不会从 Sqlite3 获取任何数据
为啥字符串不等于 sqlite3 数据库中的文本值(Python)