**如何从输出中删除双引号**
app.get('/yearexpense',(req,res)=>{
mysqlConnection.query('SELECT login.display_name AS label, group_concat( daily_expenses.amount) AS data FROM login JOIN daily_expenses ON login.id = daily_expenses.user GROUP BY daily_expenses.user',(err,rows,fields)=>{
if(!err)
res.send(rows);
})
});
预期产量
[
{ data: [330, 600], label: 'Ravi' },
{ data: [120, 455], label: 'Amit' },
{ data: [45, 67], label: 'Roshan' }
];
获取输出
[{"label":"Ravi Kanti","data":"[314,444]"},{"label":"Amit prakash","data":"[78]"},{"label":"Roshan Kumar","data":"[215,80,165]"}]
答案 0 :(得分:0)
rows
回调中的query()
变量包含预期的结果。
W3Schools有一些示例: https://www.w3schools.com/nodejs/nodejs_mysql_select.asp
答案 1 :(得分:0)
作为参数传递给mysqlConnection.query
的arrow函数是一个回调。这意味着您不知道何时执行。
您可以使用async/await
语法来阻止调用,直到查询给出结果为止。
您可能需要在util.promisify
上使用mysqlConnection.query
才能返回Promise。
尝试以下方法:
app.get('/yearexpense', async (req,res) => {
try {
const results = await mysqlConnection.query('SELECT login.display_name AS label, group_concat( daily_expenses.amount) AS data FROM login JOIN daily_expenses ON login.id = daily_expenses.user GROUP BY daily_expenses.user')
// process the results
// res.send(results)
} catch(error) {
console.log(error)
// deal with the error
}
})
请记住:要使用关键字await
,必须将周围功能标记为async