首页 > 解决方案 > 简单的 HXR 请求返回 mysql 响应

问题描述

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

这是我的绊脚石:

我有一个简单的 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);

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

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

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

谢谢,

担。

标签: javascriptmysqlnode.jsasynchronousxmlhttprequest

解决方案


请参阅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());

推荐阅读