我可以从node中的sqlite3数据库中获取数组而不是JSON数组的结果吗?

apeeds0o  于 5个月前  发布在  Node.js
关注(0)|答案(2)|浏览(59)

我真的是新手,我刚刚掌握了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']]


那么有没有一种方法可以动态地转换所有的数据,因为有时它可能是一个2d数组,有时它可能是一个1d数组,并且可能有n个对象
我必须创建一个函数来构建它,还是有其他方法

9udxz4iz

9udxz4iz1#

你可以这样做,它会给你一个给予数组的数组。

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;
}

w8rqjzmb

w8rqjzmb2#

这里的大部分繁重工作可以通过Object.values()完成,然后我们可以使用一个函数来适当地处理1d和2d结果集

const output1d = {col1: 'col1', col2: 'col2', col3: 'col3'};
const output2d = [{r1col1: 'col1', r1col2: 'col2'}, {r2col1: 'col1', r2col2: 'col2'}];

function resultsToArray(resObj) {
  if (Array.isArray(resObj)) {
    return resObj.map((item) => Object.values(item));
  } else {
    return Object.values(resObj);
  }
};

console.log(resultsToArray(output1d));

console.log(resultsToArray(output2d));

字符串
输出...

[ 'col1', 'col2', 'col3' ]
[ [ 'col1', 'col2' ], [ 'col1', 'col2' ] ]

相关问题