【问题标题】:Nodejs mysql select responseNodejs mysql选择响应
【发布时间】:2019-07-21 13:46:41
【问题描述】:

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

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

【问题讨论】:

    标签: mysql arrays node.js


    【解决方案1】:

    作为参数传递给mysqlConnection.query 的箭头函数是一个回调。这意味着你无法知道它何时会被执行。

    您可以使用async/await 语法来阻止您的调用,直到查询为您提供结果。

    您可能需要在 mysqlConnection.query 上使用 util.promisify 以使其返回 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

    【讨论】:

      【解决方案2】:

      query() 回调中的 rows 变量包含预期结果。

      W3Schools 有一些例子: https://www.w3schools.com/nodejs/nodejs_mysql_select.asp

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-05-19
        • 2017-04-02
        • 2023-02-06
        • 2012-01-08
        • 1970-01-01
        • 2020-02-14
        • 1970-01-01
        • 2012-01-13
        相关资源
        最近更新 更多