我可以从节点中的 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 数组的结果吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何从节点js中的数组中获取文件名值

无法从带有意外字符的 sqlite3 文件中检索数据

iPhone Core Data 不会从 Sqlite3 获取任何数据

为啥字符串不等于 sqlite3 数据库中的文本值(Python)

我无法从我的 xml 中以 xsl 编码获取子循环中的根节点数据

遍历Firebase中节点中的所有节点