2013-12-08 41 views
0

考慮的sqlite3的下面的代碼的NodeJS如何獲取記錄值,而不在sqlite3的知道列名的Node.js

db.each("SELECT rowid AS id, item FROM SampleTable", function(err, row) { 
    return console.log(row); 
}); 

這將打印在控制檯下面

{ id: 1, item: 'Item #0' } 
{ id: 2, item: 'Item #1' } 
{ id: 3, item: 'Item #2' } 
{ id: 4, item: 'Item #3' } 
{ id: 5, item: 'Item #4' } 
{ id: 6, item: 'Item #5' } 
{ id: 7, item: 'Item #6' } 
{ id: 8, item: 'Item #7' } 
{ id: 9, item: 'Item #8' } 
{ id: 10, item: 'Item #9' } 

我想要得到的記錄值(1 2 3 ... & Item#0,Item#1 ...),不使用列名即不使用row.id和row.item。我的實際項目本質上是動態的,它處理多個DB中的不同表格。因此不可能知道列名。

我發現節點sqlite3的維基以下https://github.com/mapbox/node-sqlite3/wiki/API

It is impossible to access them by column index; the only supported way is by column name. 

我想知道是否有用於獲取記錄值,而不使用列名的任何解決辦法。我能得到的最接近以下。 loop and get key/value pair for JSON array using jQuery

回答

0

您可以使用for/in來獲取列名稱(或行對象屬性)。

使用功能通過索引來訪問屬性:

//col is a 0-based column index 
function getRowColumn(row, col) { 
    for (p in row) { 
     if (col==0) return row[p]; 
     --col; 
    } 
} 

所以,你可以使用:

... getRowColumn(row, 0) ... 
... getRowColumn(row, 1) ... 
... getRowColumn(row, 2) ... 
相關問題