无法从mysql数据库获取数据

问题描述 投票:0回答:1

我正在尝试从 mysql 数据库中获取一些数据。

后端似乎工作正常,数据被记录在那里但不是在前端。

app.post('/api/user/database_test', (req, res, next) => {

  var result;

  database.query('SELECT * FROM test', function (error, response, fields) {
    if (error) throw error; 
    console.log('response:', response);

     result = response; 
     console.log('result: ', result) //works fine
  })

  res.status(200).json({
    message: 'Data from Database :',
    result: result
  })
});

后台控制台显示:

result:  [
  RowDataPacket {
    userid: '1',
    username: 'testuser',
    firstname: 'testname',
    lasname: 'testname2',
    email: '[email protected]',
  }
]

但我还需要在前端显示数据,所以我这样尝试了。

 async getFromDB() {

    var obj = 'test';

    this.http.post('http://localhost:3000/api/user/database_test', obj)
      .subscribe((response) => {
        
        console.log('response: ', response)  


      })
  }  

但是我在浏览器控制台中只收到消息“来自数据库的数据”,但没有收到实际数据。我也尝试记录 response.result 但代码不再编译。

我做错了什么?

mysql node.js angular post angular-httpclient
1个回答
0
投票

问题出在后端代码上:

db.query
是异步的,所以
res.json
在数据库部分完成之前返回结果,所以你在实际拉取之前将空结果返回给客户端。

尝试将响应部分移到

db.query
中,以便
res.json
db.query
完成时运行:

app.post('/api/user/database_test', (req, res, next) => {


    database.query('SELECT * FROM test', function(error, response, fields) {
        if (error) throw error;
        console.log('response:', response);

        console.log('result: ', response) //works fine

        res.status(200).json({
            message: 'Data from Database :',
            result: response
        });

    })


});
© www.soinside.com 2019 - 2024. All rights reserved.