学习记录
node实现封装数据库配置,封装query函数
准备两个js文件其中config.js是配置数据库信息// 配置链接数据库参数module.exports = { host:'localhost',//数据库地址 user:'root',//账户名 password:'root',//密码 port:'3306',//端口 database:'webserver',//数据库名 ...
2019-12-24 10:14:34
602
                <p>准备两个js文件</p> 

 其中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)//抛错,将错误携带致回调函数,往下传递
}

})