node.js 调用mysql 数据库
时间:2019-10-26
本文章向大家介绍node.js 调用mysql 数据库,主要包括node.js 调用mysql 数据库使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
1、在package.json中添加mysql依赖
命令:npm install mysql --save
2、项目中添加mysql文件夹
> 文件夹下创建config文件夹,并在config下创建index.js写入mysql配置文件
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文件
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, }
3、创建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.git
原文地址:https://www.cnblogs.com/eye-like/p/11743662.html
- RDD持久化
- P02_Hadoop CDH 5.3.6集群搭建
- P01_Spark开发测试运行环境安装Spark开发测试运行环境安装
- spark2.x依赖包POM
- P03_Hive 安装
- P06_flume-ng-1.5.0-cdh5.3.6安装
- P04_zookeeper-cdh5集群搭建
- P05_kafka_2.9.2-0.8.1集群搭建
- 再探matplotlib
- 分布式系统(Distributed System)资料
- Python性能提升20倍居然不是标题党?
- Spark开发电商日志分析用户行为聚合功能练习下面开始搭建开发环境注意Task表中最后一个列task_param中,Json的StartDate和EndDate需要设置成今天,因为mock数据的时候,
- HDU 3783 ZOJ
- HDU 1412 {A} + {B}
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法