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