13.mysql模块

1.在node.js中安装mysql模块,复制粘贴11文件夹,重命名为13,13文件夹上右键,在终端中打开
在这里插入图片描述
输入npm i mysql,在13文件夹下面多了一个node_modules文件夹,同时弹出了一些黄色的警告信息(暂时忽略)
在这里插入图片描述
2.引入mysql模块,打开server.js,在http.createServer前面添加下列代码

//引入mysql
var mysql = require('mysql')
//创建连接
var connection = mysql.createConnection({
    host: 'localhost',//连接到本机mysql
    user: 'root',//用户名
    password: '123456',//密码
    database: 'test'//数据库
})
//执行连接方法,如果出现连接错误则输出错误信息
connection.connect(function (err) {
    if (err) console.log(err)
})

3.把else if (router && !ext) {...}的大括号中代码块替换成

        connection.query('SELECT * from users', function (err, results) {
            res.writeHead(200, { 'Content-Type': 'application/json;charset=UTF8' })
            res.write(results)
            res.end()
        });

4.在终端中node server,浏览器地址改为http://127.0.0.1:8080/xxx(xxx可以替换成不带".扩展名"的连接),浏览器其中显示从test数据库的users数据表获取的所有数据。
在这里插入图片描述
5.对else if (router && !ext) {...}的大括号中代码块进行优化,替换成Get函数

        var table = router.split('/')[1]//访问的数据表
        var query = urls.query//访问的参数
        Get(table, query, function (err, data) {
            res.writeHead(200, { 'Content-Type': 'application/json;charset=UTF8' })
            res.write(data)
            res.end()
        })

6.在function mime(ext) {...}后面定义Get函数

function Get(table, query, fn) {
    var where = ' where 1=1 '
    for (var item in query) {
        where = where + ' and ' + item + ' = ' + query[item]
    }
    connection.query('SELECT * from ' + table + where, function (err, results) {
        if (err) {
            fn(err, '查询数据错误')
        } else {
            fn(false, results.length == 0 ? '没有查询到数据' : JSON.stringify(results))
        }
    });
}

6.完整的server.js

var http = require('http')
var fs = require('fs')
var url = require('url')
var mysql = require('mysql')

var mysql = require('mysql');
var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '123456',
    database: 'test'
})
connection.connect(function (err) {
    if (err) console.log(err)
});

http.createServer(function (req, res) {
    var urls = url.parse(req.url, true)
    var pathname = urls.pathname
    if (pathname == '/') pathname = '/index.html'
    var router = pathname.split('.')[0]
    var ext = pathname.split('.')[1]

    if (router && ext) {
        fs.readFile('./static' + pathname, function (err, data) {
            if (err) {
                if (ext == 'html') {
                    fs.readFile('./static/404.html', function (err, data) {
                        res.writeHead(200, { 'Content-Type': 'text/html' })
                        res.write(data)
                        res.end()
                    })
                } else {
                    res.end()
                }
                return
            }
            res.writeHead(200, { 'Content-Type': mime(ext) })
            res.write(data)
            res.end()
        })
    } else if (router && !ext) {
        var table = router.split('/')[1]
        var query = urls.query
        Get(table, query, function (err, data) {
            res.writeHead(200, { 'Content-Type': 'text/plain;charset=UTF8' })//application/json
            res.write(data)
            res.end()
        })
    }
}).listen(8080)

console.log('run http://127.0.0.1:8080')

function mime(ext) {
    if (ext == 'html') {
        ext = 'text/html'
    } else if (ext == 'css') {
        ext = 'text/css'
    } else if (ext == 'js') {
        ext = 'application/x-javascript'
    } else if (ext == 'json') {
        ext = 'application/json'
    } else if (ext == 'txt') {
        ext = 'text/plain'
    } else if (ext == 'jpg') {
        ext = 'image/jpeg'
    } else if (ext == 'png') {
        ext = 'image/png'
    } else if (ext == 'gif') {
        ext = 'image/gif'
    } else {
        ext = 'text/html'
    }
    return ext
}
function Get(table, query, fn) {
    var where = ' where 1=1 '
    for (var item in query) {
        where = where + ' and ' + item + ' = ' + query[item]
    }
    connection.query('SELECT * from ' + table + where, function (err, results) {
        if (err) {
            fn(err, '查询数据错误')
        } else {
            fn(false, results.length == 0 ? '没有查询到数据' : JSON.stringify(results))
        }
    });
}

最终效果
在这里插入图片描述

发布了30 篇原创文章 · 获赞 2 · 访问量 6400

猜你喜欢

转载自blog.csdn.net/yaochaohx/article/details/104558100
今日推荐