node实现封装数据库配置,封装query函数

准备两个js文件

 其中config.js是配置数据库信息

// 配置链接数据库参数
module.exports = {
    host:'localhost',//数据库地址
    user:'root',//账户名
    password:'root',//密码
    port:'3306',//端口
    database:'webserver',//数据库名
    connectTimeout:5000, // 连接超时
    multipleStatements:false // 是否允许一个query中包含多条sql语句
};

db.js是封装query函数

const mysql = require('mysql')
const config = require('./config') //引入数据库配置信息

// 向外暴露方法
module.exports = {
    query: function(sql, params, callback) {
        // 每次使用的时候需要创建链接,数据操作完成之后要关闭连接
        let conn = mysql.createConnection(config);
        conn.connect(function(err) {
            if(err) {
                console.log('数据库链接失败');
                throw err;
            }
            // 操作数据库
            // 传入三个参数,第一个参数sql语句,第二个参数sql语句中需要的数据,第三个参数回调函数
            conn.query(sql, params, function(err, res, fields) {
                if(err) {
                    console.log('数据操作失败');
                    throw err;
                }
                // 将查询出来的数据返回给回调函数
                callback && callback(res, fields);
                // res作为数据操作后的结果,fields作为数据库连接的一些字段
                // 停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
                conn.end(function(err) {
                    if(err) {
                        console.log('关闭数据库连接失败!');
                        throw err;
                    }
                });
            });
        });
    }
};

准备测试

有一个test.js

const express = require('express')
const db = require('./db/db')
const cors = require('cors')// 跨域
const bodyParser = require('body-parser');//解析参数

const app = express(); 

app.use(cors()) //解决跨域
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));//允许表单请求

app.listen(9000,()=>console.log('服务启动'))

//注册
app.get('/search',async (req,res,next)=>{
    try{
        db.query('SELECT * FROM user', [], function(result, fields) {
            res.json({result})
        });
    }catch(error){
        next(error)//抛错,将错误携带致回调函数,往下传递
    }
    
})
发布了69 篇原创文章 · 获赞 20 · 访问量 9781

猜你喜欢

转载自blog.csdn.net/qq_41980461/article/details/103678212
今日推荐