开箱即用的Node.js+Mysql模块封装实现详解

目录
  • 前言
  • 正文
    • 项目目录
    • sql.js
    • dbconfig.js
    • db.js
    • 查一个
    • 查全部
    • paramList
  • 如何使用
  • 搞定

前言

最近在写毕设,采用的是学弟+自己的技术栈,运用Vue3+ElementPlus搞前端,Node.js express做后端,毕竟,java那东西确实不在我技术栈里。

于是乎,我抱着能CV就不要自己敲的心态,前去了某C站,C回了一个封装好了看上去存在可用性的基础sql模块,结果,踩了大坑。

痛定思痛,我采用了学弟+腾讯会议的debug方式,于事发当天下午,花费了一个小时,成功搭建出了一个简单易用,小学难度的一个操作数据库的小模块。

领略过下雨的痛,所以勇敢站出来为别人打伞,如果你只是想单纯的用他做一些简单的东西,那么大胆用,CV用!

正文

项目目录

只是单独把数据库模块拎出来了

├─index.js
├─db
| ├─db.js //封装的操作函数
| ├─dbconfig.js //数据库配置
| └sql.js  //sql语句

sql.js

主要是存放一些操作表的sql语句,这里只是放了一个表,多个表也可以~

//单纯的栗子
let user = {
  insert: "INSERT INTO user(id, name, age) VALUES(?,?,?)",
  update: "UPDATE user SET name=?, age=? WHERE id=?",
  delete: "DELETE FROM user WHERE id=?",
  queryById: "SELECT * FROM user WHERE id=?",
  queryAll: "SELECT * FROM user",
};
module.exports = {
  user,
};

dbconfig.js

数据库的配置,服务器上的就写服务器的,本地的就写本地的,都可以都可以

let mysqlConfig = {
    host: "1.2.3.4",
    user: "******",
    password: "******",
    port: "******",
    database: "******",
  };
module.exports = mysqlConfig

db.js

先引入

const mysql = require("mysql");
const $dbConfig = require("./dbconfig.js"); //注意改成自己项目中的路径
const sql = require("./sql.js");
const pool = mysql.createPool($dbConfig); // 使用连接池

let dbAdd = (table, req, res, next) => {
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      let paramValue = paramList(req);
      connection.query(sql[table].insert, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

let dbDelete = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].delete, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

let dbUpdate = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].update, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

查一个

let dbQueryById = (table, req, res, next) => {
  let paramValue = paramList(req);
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].queryById, [...paramValue], (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

查全部

let dbQueryAll = (table, req, res, next) => {
  return new Promise((resolve,reject)=>{
    pool.getConnection((err, connection) => {
      connection.query(sql[table].queryAll, (err, result) => {
        if(err){
          reject(err)
        }
        resolve(result)
        connection.release();
      });
    });
  })
};

paramList

connection.query的第二个参数要求传数组,为了怕bug,将传入的对象给他变成一个数组返回回去 示例:mysqljs-https://github.com/mysqljs/mysql#custom-format

let paramList = (obj) => {
  let paramArr = [];
  for (let key in obj) {
    if (obj[key]) {
      paramArr.push(obj[key]);
    }
  }
  return paramArr;
};

如何使用

下面移步到index.js,引入我就不在写一次了,大家自己引入就好。

app.post("/login",async (req,res) =>{
  const {username,password} = req.body // 接收数据
    try {
       //看这里, 我们使用username的方式去数据库进行用户查找
      const {data} = await db.dbQueryById("user",{"username":username},res)
      // 接下来自己想象吧
    } catch (err) {
      res.json({
        code: "500",
        msg: "用户不存在"
      });
    }
})

搞定

再次吐槽一下,去百度各种搜,查阅时候的痛苦,以上就是开箱即用的Node.js+Mysql模块封装实现详解的详细内容,更多关于Node.js+Mysql模块封装的资料请关注我们其它相关文章!

(0)

相关推荐

  • 解决Node.js mysql客户端不支持认证协议引发的问题

    前言 mysql模块(项目地址为https://github.com/mysqljs/mysql)是一个开源的.JavaScript编写的MySQL驱动,可以在Node.js应用中来操作MySQL.但在使用过程中,出现了"ER_NOT_SUPPORTED_AUTH_MODE"问题. 本文介绍了出现该问题的原因及解决方案. 报错信息 当我试图使用mysql模块来连接MySQL 8时,出现了如下错误信息: D:\workspaceGithub\nodejs-book-samples\sam

  • Node.js+Express+Mysql 实现增删改查

    这次选用nodejs+express+mysql 使用http作为客户端,express框架搭建服务端,从而实现数据的增删改查.这篇文章可以算作上篇文章的升级篇,加入了和数据库的交互. 安装 node 直接去官网下载选择下载即可https://nodejs.org/en/download/current/ cnpm install express //express框架安装 cnpm install mysql //mysql驱动安装 brew install mysql //数据库的安装,根据

  • Node.js如何在项目中操作MySQL

    目录 1.在项目中操作 MySQL的步骤 2.安装与配置 mysql 模块 1.安装 mysql 模块 2.配置 mysql 模块 3.测试 mysql 模块能否正常工作 3.使用 mysql 模块操作 MySQL 数据库 1.查询数据 2.插入数据 3.插入数据的便捷方式 4.更新数据 5.更新数据的便捷方式 6.删除数据 7.标记删除 1.在项目中操作 MySQL的步骤 (1)安装操作 MySQL 数据库的第三方模块(mysql) (2)通过 mysql 模块连接到 MySQL 数据库 (3

  • Node.js对MySQL数据库的增删改查实战记录

    目录 在项目中操作数据库的三大步骤 操作数据库的具体步骤 一:安装MySQL模块及express模块 二:通过express创建一个服务器 三:配置MySQL模块 四:测试 mysql 模块能否正常工作 SELECT:查询one数据表中所有的数据: INSERT INTO:向数据库中添加数据: UPADTE:修改数据库中的数据: DELETE:删除数据库中的数据: 总结 在项目中操作数据库的三大步骤 安装操作 MySQL 数据库的第三方模块(mysql) 通过 mysql 模块连接到 MySQL

  • Node.js 连接 MySql 统计组件属性的使用情况解析

    目录 背景 思路 SQL编写 查询页面节点上配置的属性 查询节点事件的配置 表单字段配置的属性 查询区域表单字段配置的属性 创建SQL连接 执行SQL & 处理数据 输出 总结 背景 团队研发了一个 「低代码工具」,主要应用在公司的业务上,用于解决一些重复低效的工作,提高开发效率,降低开发成本.工具的页面在 相关文章 中有,在此就不贴图啦. 哪些是低效重复的工作?比如: 简单的增删改查 字段与页面的绑定,比如某些管理类型的页面,一个表单动不动上百个字段,逻辑简单,但全是搬砖的活. 不举例子了,太

  • node.js通过Sequelize 连接MySQL的方法

    一.通过koa2脚手架构建项目 1.1 安装koa-generator 在终端输入: $ npm install -g koa-generator 1.2 使用koa-generator生成koa2项目 $ koa2 HelloKoa2 成功创建项目后,进入项目目录,并执行npm install命令 $ cd HelloKoa2 $ npm install 1.3 启动项目 在终端输入: $ npm start 项目启动后,默认端口号是3000,在浏览器中运行可以得到下图的效果说明运行成功. 二

  • 开箱即用的Node.js+Mysql模块封装实现详解

    目录 前言 正文 项目目录 sql.js dbconfig.js db.js 增 删 改 查一个 查全部 paramList 如何使用 搞定 前言 最近在写毕设,采用的是学弟+自己的技术栈,运用Vue3+ElementPlus搞前端,Node.js express做后端,毕竟,java那东西确实不在我技术栈里. 于是乎,我抱着能CV就不要自己敲的心态,前去了某C站,C回了一个封装好了看上去存在可用性的基础sql模块,结果,踩了大坑. 痛定思痛,我采用了学弟+腾讯会议的debug方式,于事发当天下

  • Node.js基础模块babel使用详解

    目录 安装配置 使用babel 实际例子 类的转化 babel-polyfill 前言: 由于ES6到ES7增加了很多新的语法,新特性的出现使得大家都希望通过新语法来提升自身的开发效率,但在之前的最新的node可能也没有百分之百的支持ES2017的新特性,而且开发者在开发环境和生产环境中的版本一般是不同的,所以新特性的代码可能不能完美的运行在线上环境中,为了解决难题,babel提供一系列的api来将新特性的语法转化成低版本环境中能够运行的代码 安装配置 babel是由一系列的组件构成,所以我们在

  • Node.js+Express配置入门教程详解

    Node.js是一个Javascript运行环境(runtime).实际上它是对Google V8引擎进行了封装.V8引 擎执行Javascript的速度非常快,性能非常好.Node.js对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好.Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快.易于扩展的网络应用.Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效,非常适合在分布式设备上运行的数据密集型

  • Node.js REPL (交互式解释器)实例详解

    Node.js  REPL (交互式解释器)实例详解 Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应. Node 自带了交互式解释器,可以执行以下任务: 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中. 执行 - 执行输入的数据结构 打印 - 输出结果 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出. 多行表达式

  • 在Node.js中使用Javascript Generators详解

    Generators是Javascript的一种协同程序( coroutine 简称:协程)风格,是指那些可以在执行时暂停然后又恢复的函数,该函数是在functi配以星号符号形式如function* ,函数内有些特征关键词如yield 和yield*. function* generatorFn () { console.log('look ma I was suspended') } var generator = generatorFn() // [1] setTimeout(functio

  • node.js命令行教程图文详解

    本文先介绍原生的node.js实现命令行交互,了解原生的api,然后通过commander.js和inquirer.js实现一个完整的交互命令行工具. 项目地址 process (进程) process对象是一个全局变量,它提供了当前node.js进程的信息并对其控制.因为其是一个全局变量所以无需在文件中引入. 需要用到的几个api process.argv process.cwd() process.stdin process.stdout process.stdin.resume() pro

  • Node.js  REPL (交互式解释器)实例详解

    Node.js  REPL (交互式解释器)实例详解 Node.js REPL(Read Eval Print Loop:交互式解释器) 表示一个电脑的环境,类似 Window 系统的终端,我们可以在终端中输入命令,并接收系统的响应. Node 自带了交互式解释器,可以执行以下任务: 读取 - 读取用户输入,解析输入了Javascript 数据结构并存储在内存中. 执行 - 执行输入的数据结构 打印 - 输出结果 循环 - 循环操作以上步骤直到用户两次按下 ctrl-c 按钮退出. 多行表达式

  • node.js连接mongoose数据库方法详解

    目录 创建项目命令 连接mongoose数据库 配置跨域 运行 创建项目命令 express --view ejs 项目名 进入项目,我们需要npm i 下载配置文件 有时候会出先端口已经被占用的情况,我们可以在bin目录下www文件中修改端口 连接mongoose数据库 我们创建一个新的文件夹,然后在文件夹下创建一个连接mongoose数据库的文件,代码如下 var mongoose=require('mongoose') mongoose.connect('mongodb://127.0.0

  • node.js发送邮件email的方法详解

    本文实例讲述了node.js发送邮件email的方法.分享给大家供大家参考,具体如下: 通常我们做node项目时,可能我们会碰到做一个简单的邮件反馈,那么我们今天就来讨论一下,其中遇到的各种坑. 总的来说做这个东西,我们可能需要node第三方依赖模块,来实现我们要达到的效果. 这里我推荐两个模块:https://github.com/pingfanren/Nodemailer npm install nodemailer //这个模块不错,github上星也比较多,还经常有维护,但是坑也比较多

  • Node.js Streams文件读写操作详解

    Node.js 天生异步和事件驱动,非常适合处理 I/O 相关的任务.如果你在处理应用中 I/O 相关的操作,你可以利用 Node.js 中的流(stream).因此,我们先具体看看流,理解一下它们是怎么简化 I/O 操作的吧. 流是什么 流是 unix 管道,让你可以很容易地从数据源读取数据,然后流向另一个目的地. 简单来说,流不是什么特别的东西,它只是一个实现了一些方法的 EventEmitter .根据它实现的方法,流可以变成可读流(Readable),可写流(Writable),或者双向

随机推荐