node大部分方法都是异步的,在操作数据库方法后面紧接着输出结果,输出的结果只会为空值,使用promise及其方便的解决这个问题,接下来看看node如何使用路由来处理不同请求,进而操作mysql数据库
一、引入相关依赖
node中默认没有mysql,需要使用npm i mysql
指令进行安装
const http = require('http');
const url = require('url');
const queryStr = require('querystring');
var mysql = require('mysql');
二、连接mysql数据库
配置本地mysqli数据库相关参数
var connection = mysql.createConnection({
host: 'localhost',*
user: 'root',*
password: '你的数据库密码',
*database: 'xxxx'
});
connection.connect();
三、使用promise async,await封装处理异步问题的函数
// Promise async,await解决异步问题
function fn(sql, data = []) {
return new Promise((success) => {
connection.query(sql, data, function (error, results) {
if (!error) {
success(results)
}
});
})
}
四、node启动服务
通过判断请求路径来给与请求不同的响应,调用promise处理异步问题
var obj = {};*
http.createServer(async (req, res) => {
res.writeHead(200, {*
'Content-Type': 'text/html; charset=utf-8'
});
// 解析请求路径以及参数
const { pathname, query } = url.parse(req.url);
if (pathname != '/favicon.ico') {*
switch (pathname) {
case '/':
var sql = "select * from user";
var result = await fn(sql);
obj = {
code: 1,
data: result
}
break;
case '/list':*
var data = queryStr.parse(query).tel;
console.log(data);*
*var sql = `select * from user where tel =${data}`;
var result = await fn(sql);
console.log(result);
obj = {
code: 2,
data: result
}*
break;
}
}
res.end(JSON.stringify(obj));
}).listen(10086)
console.log('http:localhost:10086');