node-路由操作mysql数据库

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');
posted @ 2020-07-10 13:41  飘逸_winxin  阅读(247)  评论(0编辑  收藏  举报