2015-09-27 54 views
0
var usersRows = []; 
connection.query('SELECT * from users', function(err, rows, fields) { 
    if (!err) { 
     rows.forEach(function(row) { 
      usersRows.push(row); 
     }); 
     console.log(usersRows); 
    } 
    else { 
     console.log('Error while performing Query.' + err); 
    } 
}); 

這回我:Javascript數組解析

var usersRows = [ [ RowDataPacket { id: 1, name: 'sall brwon', number: '+99999999\r\n' } ] ]; 

我需要解析這一點,並刪除rowdatapacket;我需要的結果是這樣的:

userRows = { id: 1, name: 'my name is', number: '+999999\r\n' }; 
+0

我找不到任何解決方案......爲什麼如此咄咄逼人:( –

+0

出於某種原因,我的評論已被刪除...這樣的評論是:「和你嘗試過什麼」怎麼 –

回答

1

你試過

userRows = RowDataPacket; 
+0

RowDataPacket沒有定義 –

+0

它沒有定義?從我看到您的帖子上它的價值是{id:1,name:'sall brwon',number:'+99999999 \ r \ n'} – Yokowasis

+0

thanx其工作 –

0

你可能想嘗試JSON.stringify(rows)

+0

這將返回一個字符串,當OP正在尋找對於這個對象來說,再加上,與接受的答案相比,這樣做相當昂貴。 –

0

如果您需要擺脫RowDataPacket的陣列,並將其保存在你的,你也可以使用此:

usersRows = JSON.parse(JSON.stringify(results));

0

無法理解和執行接受的答案。 因此,根據我得到的結果嘗試了很長的路要走。

使用 「mysql的」 AM: 「2.13.0」,只見那這個庫返回數組的數組外面:

Index 0 had array of RowDataPackets 
Index 1 had other mysql related information. 

請找到下面的代碼:

var userDataList = []; 
//Get only the rowdatapackets array which is at position 0 
var usersRows = data[0]; 
//Loop around the data and parse as required 
for (var i = 0; i < usersRows.length; i++) { 
    var userData = {}; 
    //Parse the data if required else just 
    userData.name = userRows.firstName + userRows.lastName; 
    userDataList.push(userData); 
} 

如果沒有解析是必需的,你只是想要的數據是這樣的,你可以使用像鏈接中提到的解決方案How do I loop through or enumerate a JavaScript object? 還沒有嘗試過,但可以調整和解決。

應該有更簡單的方法來做到這一點,但作爲一個新手,我發現上述方式服務器的目的。在更好的解決方案的情況下做評論。