2017-04-19 40 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

相关问题