Node.js MySQL选择响应

时间:2019-02-27 18:29:22

标签: mysql arrays node.js

**如何从输出中删除双引号**

    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]"}]

2 个答案:

答案 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