javascript - 简单的 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);
当我运行此文件并将浏览器指向它时,我收到消息“这是您的结果:”但没有结果。
我知道这是一个非常简单的问题,我将一遍又一遍地遇到。
如果有人可以提供此代码工作的简单示例,并可能指向我进行一些相关阅读,我将非常感激。
谢谢,
担。
解决方案
请参阅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());
推荐阅读
- javascript - 将 html、js 和 python 文件导入快速服务器
- python - 在一个键的多个值的字典中添加列表或字典 - Python
- odoo - 如何在 odoo.conf 中使用环境变量
- angular - 为什么 Angular 组件定义接口?
- javascript - 在 Sails 操作中访问 url 参数
- xamarin - Xamarin.Android.Targets 失败并出现错误“输入字符串的格式不正确。”
- gcc - gcc 链接器如何获取函数的大小?
- android - ViewPager 内的 EpoxyRecyclerView
- javascript - 如果项目与字符串匹配,请检查 localStorage
- haskell - 如何处理需要额外类型约束的类型类实例