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