【问题标题】:Simple HXR request return mysql response简单的 HXR 请求返回 mysql 响应
【发布时间】:2020-10-15 22:51:30
【问题描述】:

我试图一劳永逸地了解客户端和服务器之间的异步交互!我一直在这个问题上磕磕绊绊,我需要理解它。

这是我的绊脚石:

我有一个简单的 nodeJS 文件,它应该在端口 8080 上进行侦听,并以 mysql 查询的结果进行响应。在这里:

const mysql = require('mysql');
const http = require('http');
const Promise = require('promise');

const con = mysql.createConnection({
  host: "localhost",
  user: "user",
  password: "password",
  database: "database"
});

const queryDatabase = (query = "SELECT * FROM users") => new Promise( (resolve, reject) => {
  try {
    con.connect( (err) => {
      if (err) throw(err);
      else {
        con.query(query, (err, result, fields) => {
          if (err) throw(err);
          resolve(JSON.stringify(result));
        })
      }
    })
  } catch(err) {
    reject(err);
  }
})

http.createServer( async (req, res) => {
  res.writeHead(200, {'Content-Type': 'text/html'});
  // res.write(req.url);
  res.write('here are your results: ', await queryDatabase());
  res.end();
}).listen(8080);

当我运行此文件并将浏览器指向它时,我收到消息“这是您的结果:”但没有结果。

我知道这是一个非常简单的问题,我会一遍又一遍地遇到。

如果有人可以提供此代码工作的简单示例,并可能为我提供一些相关阅读,我将非常感激。

谢谢,

丹。

【问题讨论】:

    标签: javascript mysql node.js asynchronous xmlhttprequest


    【解决方案1】:

    https://nodejs.org/api/http.html#http_response_write_chunk_encoding_callback

    签名是:

    response.write(chunk[, encoding][, callback])
    

    您似乎将查询结果用作encoding 而不是chunk。尝试类似:

    res.write('here are your results: ' + await queryDatabase());
    

    【讨论】:

    • 您好,感谢您的回复。我已经尝试了您的建议,但并没有改变结果。我在控制台(我的 bash 终端)或浏览器中都没有收到任何错误。我认为问题与同步性有关。响应返回到浏览器后,queryDatabase() 的结果正在解析。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 2021-07-10
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多