node mysql 比较完善的一种使用方式

node mysql 连接池的使用

目录结构

db.js // 存放mysql配置信息

index.js // 入口文件

sql.js // 查询接口

sqlMap.js // sql语句库(暂且就叫库吧,哈哈)

需要使用到的库 express mysql body-parser

db.js

// 连接数据库配置
module.exports = {
  mysql: {
    host: '127.0.0.1',
    user: 'root',
    password: 'root',
    database: 'test',
    port: '3306',
    connectionLimit: 2 // 连接池大小
  }
}

index.js

// node 后端服务器
const express = require('express')
const app = express()
const bodyParser = require('body-parser')
const sql = require('./api/sql')

// 数据接收处理
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: false}))

// 后端api路由
app.use('/api/user', sql)

// 监听端口
app.listen(3000)

sql.js

const modules = require('../db')
const express = require('express')
const router = express.Router()
const mysql = require('mysql')
const $sql = require('../sqlMap')
  // 连接数据库信息
const pool = mysql.createPool(modules.mysql)

router.post('/sql', (req, res, next) => { // 用户名查询
  // 连接数据库
  pool.getConnection((err, connection) => {
     // 拿到传输过来的数据
    if (err) {
      throw err
    } else {
      let params = req.body
      // 拿到这次请求需要使用的sql语句
      let sql = $sql.user.login
      connection.query(sql + mysql.escape(params.user), (err, result) => {
        if (err) {
          console.log('错误破获' + err)
          throw err
        } else if (result) {
          if (result.length !== 0) {
            res.json({
              status: 1,
              result: result,
              msg: '查询成功!共' + result.length + '个用户!'
            })
          } else {
            res.json({
              status: -1,
              result: result,
              msg: '没有此用户!'
            })
          }
        }
      })
      // 关闭数据库连接
      connection.release()
    }
  })
})

module.exports = router

这里说一下,除了escape 用来防止sql注入也可以使用下面的方法,推荐使用

conn.query('SELECT NAME FROM `USET` WHERE NAME = ?', ['name'], (err, result) => {

// .... 此处省略

})

 

sqlMap.js

// sql语句
var sqlMap = {
  // 用户
  user: {
    login: 'SELECT password,salt FROM `user` WHERE name = ',
    register: 'INSERT INTO user ( name, password, salt) VALUES ',
    user: 'SELECT name FROM `user` WHERE name = ',
    insert: 'INSERT INTO user (name, age) VALUES (?,?)',
    all: 'SELECT name, age FROM `user`'
  }
}

module.exports = sqlMap 

还有 redis做session缓存,不是这里的重点就没有贴,这里使用的是 node + express + mysql ,就是为了一个sql连接池写的一个demo,备用。

发表评论

邮箱地址不会被公开。 必填项已用*标注