2017-04-19 39 views
0

我想從此函數返回一個JSON對象數組,但我遇到格式問題。我是Node.js的新手,希望更好地理解它。節點API函數返回字符串數組而不是對象

function getItems (callback) { 
    connection.query(SQL_getItems, (err, results) => { 
    if (err) { 
     callback(err); 
     return; 
    } 
    callback(null, results.map((item) => `{'name': '${item.name}', 'value': '${item.value}'}`)); 
    }); 
} 

目前的JSON看起來是這樣的:

["name: test, value: 1","name: test2, value: 0"] 

我要的是JSON對象的數組

[{"name": "test","value": "1"},{"name": "test2","value": "0"}] 

我試着調整的格式,但不能得到這很對。我試過JSON.parse,但它已經是有效的(但不是理想的)JSON。

回答

1

事實上,使用模板字符串是這樣的:

`{'name': '${item.name}', 'count': '${item.value}'}` 

map函數會返回一個字符串數組,那是你的本事。要返回預期的JSON對象,我覺得你的代碼應該是:

results.map(item => JSON.stringify({name: item.name, count: item.value}))

P/S:如果我記得很清楚,你可以通過接受頭爲application/json讓你的工作與res.send({<JS object>})自動完成。

修訂: 請問您的結果看起來是這樣的,我試過,但與你得到不同勢的結果:

enter image description here

+0

謝謝。這很有幫助。有一個問題,引號是斜線逃脫的。我應該提到,這是我試圖解決這個問題時遇到的一個問題:'[「{\」name \「:\」test \「,\」value \「:1}」, 「{\」name \「:\」test2 \「,\」value \「:0}」]' – beachCode

+1

謝謝。我想,添加更多信息,如'console.log(results); console.log(typeof結果)'在你的代碼中對於進一步的調查是有用的。 – thelonglqd

0

感謝@thelonglqd指着我在正確的方向。問題是結果已經以我需要的格式存在,所以我對它們進行了雙重編碼。

function getItems (callback) { 
    connection.query(SQL_getItems, (err, results) => { 
    if (err) { 
     callback(err); 
     return; 
    } 
    callback(null, JSON.stringify(results)); 
    }); 
} 
+0

不客氣:D – thelonglqd

相關問題