13.mysql模块

本文档介绍了如何在Node.js环境中安装并使用mysql模块。首先通过安装过程,然后演示了如何引入模块并连接到MySQL数据库,从test数据库的users表获取数据。接着对代码进行了优化,将查询操作封装为Get函数,以实现更简洁的调用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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))
        }
    });
}

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值