node-ajax操作sql自封装模块
Db.js数据库连接模块
const mysql = require("mysql");
const dbConfig = {
host: "localhost",
port: 3306,
user: "root",
password: "",
database: "数据库"
}
const to = require("./awaitTo");
class Db {
static connect(){ // 数据库连接的动作
this.con = mysql.createConnection(dbConfig);
this.con.connect();
}
static operator(sqlStr){ // 此方法利用Promise把数据库的执行sql语句的异步代码封装进去
return new Promise((resolve, reject) => {
this.con.query(sqlStr, (err, result) => {
if (err) {
reject(err);
} else {
resolve(result);
}
})
})
}
static async query(sqlStr){ // static修饰的方式里的this, 指向的是类
return await to(this.operator(sqlStr));
}
}
module.exports = Db; // 导出当前封装的Db工具类
awaitTo.js模块
function to(promise) {
let p = promise.then(data => [null, data])
.catch(err => [err, undefined]);
return p;
}
module.exports = to;
Result.js模块
// 定义统一的返回接口的数据对象格式, 方便前端统一处理判断
function underline2Hump(s) {
return s.replace(/_(\w)/g, function (all, letter) {
return letter.toUpperCase()
})
}
// xxx_axx 转 xxxAxx 下划线_转驼峰方法
// 注意嵌套问题 (所以需要递归)
const jsonToHump = (obj) => {
if (obj instanceof Array) { // instanceof 判断左侧对象是否是右侧类的实例出来的对象 跟typeof 类似
obj.forEach(function (v, i) {
jsonToHump(v) // 处理数组里每一项
})
} else if (obj instanceof Object) {
Object.keys(obj).forEach(function (key) { // Object.keys(obj) 取出所有此对象所有的key返回一个数组
var newKey = underline2Hump(key) // 把下划线的key转成驼峰连接
if (newKey !== key) { // 证明一个是驼峰一个还是下划线, 所以进入, 删除下划线的key, 添加驼峰的key然后赋值.
obj[newKey] = obj[key]
delete obj[key]
}
jsonToHump(obj[newKey]) // 如果对象key对应的value还是一个对象, 那么所有需要调用在判断
})
} // 因为如果value既不是对象也不是数组, 没有必要再进入递归了
}
/**
* 完全成功
* list 数据
* msg 提示文字
* code: 自定义一个前端判断状态的数字
*/
// exports.a = 1 和module.exports = {a: 1}相等
exports.Success = (list = [], msg = '恭喜你, 操作成功') => {
// 转成驼峰标识
jsonToHump(list) // 注意: 对象是引用关系, 所以传参是浅复制, 下面返回的还是同一个处理后的引用的数组/对象
return {
msg,
code: 200,
list
}
}
// 参数正确, 但是权限不够
exports.Guest = (msg = '权限非法') => {
return {
msg,
code: 403
}
}
// 参数错误,请检查传递的参数
exports.MError = (msg = '参数等发生错误') => {
return {
msg,
code: 500
}
}
本文来自博客园,作者:JackieDYH,转载请注明原文链接:https://www.cnblogs.com/JackieDYH/p/17634693.html