前言:

       使用node连接mysql,这里是模糊查询方法完整流程

第一:安装我们的express脚手架  入口

第二:在根目录下创建model文件夹,里面放两个文件:

1、mysql.config.js 这里放的是我们的数据库配置

//配置链接数据库参数
module.exports = {
    host : 'localhost',
    port : 3306,//端口号
    database : 'test',//数据库名
    user : 'root',//数据库用户名
    password : '123456'//数据库密码
};

2、mysql.js  这里是把mysql调用的方法简单封装了下

const mysql = require('mysql');
var databaseConfig = require('./mysql.config');  //引入数据库配置模块中的数据

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

第三:我们来使用我们的express,搭建服务

1、在router里面新加一个mysql.js文件

2、在app.js中配置

var mysqlRouter = require('./routes/mysql');
app.use('/my', mysqlRouter);

3、在mysql.js中写入内容

var express = require('express');
var router = express.Router();
const db=require('../model/mysql.js');

/**
 * 带分页和模糊查询的方法
 * */
router.get('/table',(req,res) => {
    //模糊查询的sql  SELECT * FROM  bloginformation WHERE blogTitle LIKE ? OR blogContent LIKE ? OR blogLable LIKE ?
    var params = req.query || req.params;
    let sql = "SELECT * FROM `table`";   //查询列表所有的数据
    let content = [];
    let isMore = false;//是否有多个查询参数
    if(params.name){
        // 模糊查询两种方法直接在SQL语句后加 mysql.escape("%"+req.body.name+"%")
        // sql += " WHERE product_name LIKE "+mysql.escape("%"+req.body.name+"%")
        sql += " WHERE name LIKE ?";
        content.push( "%"+params.name+"%" );
        isMore = true;
    }
    if(params.age){
        if(isMore){//true代表有多个参数
            sql += "and age like ?";//and是两个条件都必须满足,or是或的关系
        }else{
            sql += " WHERE age LIKE ?";
        }
        content.push( "%"+params.age+"%" );
    }
    if(params.page || params.page_size){//开启分页
        let current = params.page;//当前页码
        let pageSize = params.page_size;//一页展示多少条数据
        sql += " limit ?,?";
        content.push((current-1)*pageSize,parseInt(pageSize));
    }

    db.query(sql, content,function(result,fields){
        res.json({
            status:200,
            message:result
        })
    });



})



module.exports = router;

更多:

资源1

资源2

资源3

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐