我正在try 从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: 'test.test@test.de',
  }
]

但我也需要在前台显示数据,所以我这样试了一下.

 async getFromDB() {

    var obj = 'test';

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


      })
  }  

但我在浏览器控制台中只收到消息‘data from database’,而没有收到实际数据.我还试图记录Response.Result,但代码不再编译.

我做错了什么?

推荐答案

问题出在后端代码:db.query是异步的,因此res.json在db部分完成之前返回结果,因此您在实际提取结果之前向客户端返回空结果.

try 将响应部分移动到db.query内,以便res.jsondb.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
        });

    })


});

Mysql相关问答推荐

如何改进对另一个表中多行的查询依赖性

如何在JOIN中获取MySQL中的项目总数

根据现有行 Select 月份日期

PythonAnywhere中SSH到MySQL数据库无限期挂起,SSH正确,workbench可以完美连接

使用 awk 重写 maxscale 过滤器

为大表优化 Django 模型

MySQL 在第一个匹配行后停止搜索 N 行(不是 LIMIT)

为什么 MySQL 不使用索引进行简单的SELECT * FROM Table WHERE field='value'查询?

谁能帮我优化低性能的mysql查询

如何在不使用子查询的情况下按最小日期计算新用户?

如何在考虑另一表的值的情况下计算一列的值

为什么 ORDER BY 'id' 'desc' 不返回语法错误?

如何使用nodejs从mysql数据库中获取最新的10条记录?

判断一对记录是否属于多个组ID

Facebook user_id:big_int、int 还是 string?

Python MYSQL 更新语句

如何存储百分比值?

MySQL INSERT IF(自定义 if 语句)

Amazon RDS Aurora 与 RDS MySQL 与 EC2 上的 MySQL?

MySQL 连接运算符