node连接mysql数据库的一些配置(踩过的坑)

本文档介绍了在Node.js中连接MySQL数据库的配置过程,包括`db.config.js`、`db.js`和`router.js`的设置,并特别提醒了数据库配置文件的存放位置。同时,文中分享了遇到的问题,如不能使用`index`作为列名,以及JSON导入数据库时的编码困扰,最终通过手动方式解决。

node连接mysql

数据库配置文件

db.config.js

module.exports = {
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : ''
}

db.js

var mysql = require('mysql');
var dbConfig = require('./db.config');


module.exports = {
    query : function(sql,params,callback){
        //每次使用的时候需要创建链接,数据操作完成之后要关闭连接
        var connection = mysql.createConnection(dbConfig);
        connection.connect(function(err){
            if(err){
                console.log('数据库链接失败');
                throw err;
            }
            //开始数据操作
            connection.query( sql, params, function(err,results,fields ){
                if(err){
                    console.log('数据操作失败');
                    throw err;
                }else{

                    //将查询出来的数据返回给回调函数,这个时候就没有必要使用错误前置的思想了,因为我们在这个文件中已经对错误进行了处理,如果数据检索报错,直接就会阻塞到这个文件中
                    //这一句是原版的结果插入操作时候报错,改成下面的一句就好了
                    // callback && callback(JSON.parse(JSON.stringify(results)), JSON.parse(JSON.stringify(fields)));
                    callback && callback((JSON.stringify(results)), (JSON.stringify(fields)));
                }

                //results作为数据操作后的结果,fields作为数据库连接的一些字段,大家可以打印到控制台观察一下
                //停止链接数据库,必须再查询语句后,要不然一调用这个方法,就直接停止链接,数据操作就会失败
                connection.end(function(err){
                    if(err){
                        console.log('关闭数据库连接失败!');
                        throw err;
                    }
                });
            });
        });
    }
};

 router.js(路由)

var mysql = require("mysql");  //引用模块
var db = require("./db"); //引入数据库封装模块
var express = require('express');
var router = express.Router()

router.get('/getdata', function (req, res) {

    console.log(req.query.name);
    
    //查询
    if (req.query.name != '') {
        db.query(`SELECT * FROM data where name = '` + req.query.name + `'`, [], function (results, rows) {
            // 返回前端查询数据
            res.send(results)
        })

    }
})

router.get('/adddata', function (req, res) {
    //插入
    db.query(`INSERT INTO data (ind,image,name,plantInt,curInt)
                       VALUES
                       (` + req.query.ind + `,'images/p` + req.query.ind + `.jpg','` + req.query.name + `','` + req.query.plantInt + `','` + req.query.curInt + `');`, [], function (results, rows) {
        //返回前端数据
        res.send(results)
    })
})

 注意

  • 两个文件放同一路径,db.js要调用db.config.js
  • 亲测查询和插入可用

  1. mysql不能用index做列(现在才知道)。
  2. mysql导入json打死都导不进去,编码改了不知道几遍,最后还是手动。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值