node+koa+mysql之连接数据库&&使用中间件-初学者暂存

因为项目需要,我刚开始接触,记录一下,连接数据库这里参考了文档,忘记来源了

连接数据

const config = {
  // 数据库配置
  database: {
    DATABASE: '0228', //数据库名称
    USERNAME: 'root', //mysql用户名
    PASSWORD: '123456abc', //mysql密码
    PORT: '3306', //mysql端口号
    HOST: 'localhost' //服务器ip
  }
}

module.exports = config

配置一些mysql的执行语句

var mysql = require('mysql');
var config = require('./dbConfig');  //dbConfig即上边配置数据库的文件

var pool = mysql.createPool({
  host: config.database.HOST,
  user: config.database.USERNAME,
  password: config.database.PASSWORD,
  database: config.database.DATABASE
});

let allServices = {
  query: function (sql, values) {

    return new Promise((resolve, reject) => {
      pool.getConnection(function (err, connection) {
        if (err) {
          reject(err)
        } else {
          connection.query(sql, values, (err, rows) => {

            if (err) {
              reject(err)
            } else {
              resolve(rows)
            }
            connection.release()
          })
        }
      })
    })

  },
  queryData: function (sql) {
    return allServices.query(sql)
  },
  insertData: (_table, params) => {
    let sql = `INSERT INTO ${_table} (${params.key_name.toString()}) VALUES(${params.key_reg.toString()})`;
    return allServices.query(sql, params.values)
  }
}

module.exports = allServices;

中间件

说实话,我理解的可能还不够透彻,目前来说,我认为,,就好像游戏的关卡,一个中间件就像一关,可以设置多个,进入这一个,同意进行next()才能继续执行。

自己写的中间件判断访问这个接口来源于移动端还是pc

const isMobile = async (ctx, next) => {
  let flag = false
  let ua = ctx.request.headers['user-agent']
  if (ua.includes('Mobile') || ua.includes('mobile')) {
    flag = true
  }
  ctx.state.ismobile = flag
  await next()
}
module.exports = isMobile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值