一、在package.json中添加mysql依賴node
命令:npm install mysql --savemysql
二、項目中添加mysql文件夾git
> 文件夾下建立config文件夾,並在config下建立index.js寫入mysql配置文件github
const mysql = require('mysql') const connectdb=()=>{ let connection = mysql.createConnection({ host : 'localhost', port : '3306', user : 'root', password : '', database : 'rehab' }) return connection; } module.exports=connectdb;
> mysql文件夾下建立mysql.js文件sql
const conn = require('./config/index'); const connection = conn(); // 查詢全部數據 let selectAll = async(sql,callback)=>{ return sqlQuery(sql) } let selectBy = async(table,where,callback)=>{ var _WHERE=''; // var keys=''; // var values=''; for(var k2 in where){ _WHERE+=k2+"='"+where[k2]+"' AND "; //_WHERE+= k2+"='"+where[k2]+"'"; } _WHERE=_WHERE.slice(0,-5) // UPDATE user SET Password='321' WHERE UserId=12 //update table set username='admin2',age='55' where id="5"; var sql="SELECT * FROM "+table+' WHERE '+_WHERE; // console.log(sql); return sqlQuery(sql) } // 插入一條數據 let insertData =async (table,datas,callback)=>{ var fields=''; var values=''; for( var k in datas){ fields+=k+','; values=values+"'"+datas[k]+"'," } fields=fields.slice(0,-1); values=values.slice(0,-1); // console.log(fields,values); var sql="INSERT INTO "+table+'('+fields+') VALUES('+values+')'; return sqlQuery(sql) } /** * 更新一條數據 * @param {*} table 數據表名 * @param {*} sets 更新字段 * @param {*} where 限制條件 */ let updateData=async function(table,sets,where){ var _SETS=''; var _WHERE=''; var keys=''; var values=''; for(var k in sets){ _SETS+=k+"='"+sets[k]+"',"; } _SETS=_SETS.slice(0,-1); for(var k2 in where){ _WHERE+=k2+"='"+where[k2]+"' AND "; //_WHERE+= k2+"='"+where[k2]+"'"; } _WHERE=_WHERE.slice(0,-5) // UPDATE user SET Password='321' WHERE UserId=12 //update table set username='admin2',age='55' where id="5"; var sql="UPDATE "+table+' SET '+_SETS+' WHERE '+_WHERE; // console.log(sql); return sqlQuery(sql) } // 刪除一條數據 let deleteData=function(table,where,callback){ var _WHERE=''; for(var k2 in where){ _WHERE+=k2+"='"+where[k2]+"' AND "; //_WHERE+= k2+"="+where[k2]; } _WHERE=_WHERE.slice(0,-5) // DELETE FROM user WHERE UserId=12 注意UserId的數據類型要和數據庫一致 var sql="DELETE FROM "+table+' WHERE '+_WHERE; // connection.query(sql,callback); return sqlQuery(sql) } let sqlQuery=function(sql){ return new Promise((resolve,reject)=>{ connection.query(sql,(err,result)=>{ if(err){ console.log('錯誤信息-',err.sqlMessage); let errNews = err.sqlMessage; reject(errNews) } else{ resolve(result) } }) }) } module.exports = { selectAll, selectBy, insertData, deleteData, updateData, }
三、建立api文件,調用mysql數據庫數據庫
let util = require('../utils/util') const db = require('../mysql/mysql.js') var logger = require('log4js').getLogger("index"); let util_http = require('../utils/util_http') module.exports = { /** * 根據數據表名查詢所有 */ 'GET /mysql/findAll': async (ctx, next) => { ctx.response.type = 'application/json'; let table = ctx.request.query.table let sql = `select * from ${table}` await db.selectAll(sql).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) }, /** * 根據數據表名和指定查詢條件查詢 */ 'GET /mysql/findBy': async (ctx, next) => { ctx.response.type = 'application/json'; ctx.append('Access-Control-Allow-Origin', '*') let table = ctx.request.body.table let where = ctx.request.body.where await db.selectBy(table, where).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) }, /** * 根據數據表名和id查詢 */ 'GET /mysql/findById': async (ctx, next) => { ctx.response.type = 'application/json'; ctx.append('Access-Control-Allow-Origin', '*') let table = ctx.request.query.table let id = ctx.request.query.id let sql = `select * from ${table} where id='${id}'` await db.selectAll(sql).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) }, /** * 添加數據 */ 'POST /mysql/add': async (ctx, next) => { // ctx.response.type = 'application/json'; // ctx.res.header('Access-Control-Allow-Origin', '*'); if (ctx.req.method == 'POST') { let data = await util_http.getPOSTRes(ctx.req) data = JSON.parse(data) let table = data.table let params = data.params await db.insertData(table, params).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) } else { ctx.body = util.err('請求錯誤') } }, /** * 更新數據 */ 'PUT /mysql/update': async (ctx, next) => { if (ctx.req.method == 'PUT') { let data = await util_http.getPOSTRes(ctx.req) data = JSON.parse(data) let table = data.table let sets = data.sets let where = data.where // console.log('sql', table, sets, where) await db.updateData(table, sets, where).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) } else { ctx.body = util.err('請求錯誤') } }, // /** // * 更新數據 // */ // 'PATCH /mysql/patch': async (ctx, next) => { // // ctx.response.type = 'application/json'; // console.log('patch init') // ctx.body = '2222' // //ctx.body=util.res('123') // // console.log('request',ctx.request) // // let table = ctx.request.body.table // // console.log('table',table) // // let sets = ctx.request.body.sets // // let where = ctx.request.body.where // // await db.updateData(table, sets, where).then(res => { // // ctx.body = util.res(res) // // }).catch(err => { // // ctx.body = util.err(err) // // }) // }, /** * 刪除數據 */ 'DELETE /mysql/delete': async (ctx, next) => { let table = ctx.request.body.table let where = ctx.request.body.where await db.deleteData(table, where).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) }, /** * 根據數據表名和id刪除數據 */ 'DELETE /mysql/deleteById': async (ctx, next) => { ctx.response.type = 'application/json'; ctx.append('Access-Control-Allow-Origin', '*') let table = ctx.request.query.table let id = ctx.request.query.id let where = { id: id } await db.deleteData(table, where).then(res => { ctx.body = util.res(res) }).catch(err => { ctx.body = util.err(err) }) } };
git地址:https://github.com/wuyongxian20/node-api.gitnpm
更多詳細參考下篇node.js接口調用示例json