因为项目需要,我刚开始接触,记录一下,连接数据库这里参考了文档,忘记来源了
连接数据
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