Node搭建前端服务Mysql数据库交互一篇搞定

news2024/11/25 6:49:21

目录

介绍

安装环境及数据准备

代码示例

   mysql连接工具类

测试方法文件

单表总量查询

 单表条件查询

新增数据

 修改

删除

​编辑 ​编辑

联表查询 

 联表过滤

 搭配express服务搭建api使用

介绍

在前端开发中,可以使用纯node前端进行服务搭建与mysql进行数据库的交互,这样可以省略掉后台开发的权重

安装环境及数据准备

电脑需具备nodejs环境

安装必需模块

npm install mysql

npm install mysql2

mysql和mysql2都是Node.js中的MySQL数据库驱动程序,但它们有一些区别和各自的优点。

区别:

  1. API:mysql2的API比mysql更简单,更易于使用,同时也支持更多的功能。

  2. 性能:mysql2相比mysql更快,因为它采用了更高效的协议和更好的连接池实现。

  3. 兼容性:mysql2兼容mysql,因此您可以在不需要更改代码的情况下将其替换为mysql。

优点:

  1. mysql的优点:mysql是一个稳定的和广泛使用的驱动程序,具有丰富的文档和社区支持。

  2. mysql2的优点:mysql2具有更好的性能和更简单的API,还支持Promise和async/await等现代JavaScript功能。

这里以mysql2为例

本地数据库表准备
准备两张表进行测试

 

代码示例

   mysql连接工具类

  新建自定义一个js文件

const mysql = require('mysql2/promise');
module.exports = {
    // 数据库配置
    config: {
      host: '127.0.0.1',
      port: '3306',
      user: 'root',
      password: '密码',
      database: '数据库名'
    },
  
    // 连接数据库 使用数据库连接池方式连接
    async sqlConnect(sql, sqlArr, callBack) {
      const connection = await mysql.createConnection({
        host: this.config.host,
        port: this.config.port,
        user: this.config.user,
        password: this.config.password,
        database: this.config.database,
        authPlugins: {
          mysql_clear_password: () => () => Buffer.from(this.config.password + '\0')
        }
      });
  
      try {
        console.log('数据库连接成功');
        const [rows, fields] = await connection.execute(sql, sqlArr);
        callBack(null, rows);
      } catch (err) {
        console.log('数据库连接失败', err);
        callBack(err, null);
      } finally {
        await connection.end();
      }
    }
  };

这个文件写后基本不需要再动了

测试方法文件

单表总量查询

测试:

 

 

 单表条件查询

 或者使用模板语法动态拼接条件属性

 排序分页等不再演示,直接拼接在sql后面即可

新增数据

 

 修改

 

删除

 

联表查询 

 

 联表过滤

查询出的数据都是集合形式,所以可以使用集合来接收查询到的数据,然后使用集合的过滤规则等方法实现过滤筛选

 搭配express服务搭建api使用

一般在开发中可以使用express搭建前端服务,然后通过服务的接口访问数据库

重新写一版工具类

const mysql = require('mysql2/promise');

module.exports = {
  // 数据库配置
  config: {
    host: '127.0.0.1',
    port: '3306',
    user: 'root',
    password: '密码',
    database: 'testmysql2'
  },

  // 连接数据库 使用数据库连接池方式连接
  async execute(sql, sqlParams) {
    const connection = await mysql.createConnection({
      host: this.config.host,
      port: this.config.port,
      user: this.config.user,
      password: this.config.password,
      database: this.config.database
    });

    try {
      console.log('数据库连接成功');
      const [rows, fields] = await connection.execute(sql, sqlParams);
      return { success: true, data: rows };
    } catch (err) {
      console.log('数据库连接失败', err);
      return { success: false, error: err };
    } finally {
      await connection.end();
    }
  }
};

const mysqlU = require('./mysqlU');

const lianbiao = async (data) => {
  const sql = 'SELECT a.title, a.content, b.msg_type FROM `msg` a LEFT JOIN `msg_group` b ON a.code = b.type_code WHERE b.msg_type = ?';
  const sqlParams = [data];

  try {
    const result = await mysqlU.execute(sql, sqlParams);
    console.log('操作成功(返回值):', result);
    return result;
  } catch (error) {
    console.log('操作失败(错误信息):', error);
    throw error;
  }
}

module.exports = {
    lianbiao
};

 

//导入 express
const express = require('express')
    //导入自定义路由
const router = require('./myRouter')
//导入自定义测试mysql方法
const lianbiao = require('./tesymysql2/ceshi')
    //创建应用对象
const app = express();
//创建路由
app.get('/home', (req, res) => {
    // res.setHeader('content-type', 'text/html;charset=utf-8')
    // res.send('hello word 世界你a asda萨达好');
    res.json({
        name: "张飞",
        qun: '车骑将军'
    })
});
// 将相应路由绑定到 GET 请求上
app.get('/home/lianbiao/:data', async (req, res) => {
    try {
      const { data } = req.params;
      const result = await lianbiao.lianbiao(data);
      res.json({ success: true, result });
    } catch (error) {
      res.json({ success: false, message: error.message });
    }
  });

//应用自定义路由
app.use(router);
//监听端口 启动服务
app.listen(9000, () => {
    console.log('服务已启动');
})

测试:

访问9000/home

 访问接口/home/lianbiao/:data

 apipost访问:

这样只有前端的服务接口就搭建好了(*^▽^*) ヾ(@^▽^@)ノ

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/663150.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bun vs. Node.js

Bun vs. Node.js 你知道 Bun 吗?Bun 是新的 JavaScript 运行时,最近在技术领域引起轰动,它声称比 Node.js 更好。本文将展示如何使用基准分数对其进行测试。 在本文中,我们将介绍最近在技术领域引起轰动的新的 Bun 运行时。我们…

螯合剂试剂:DOTA-CH2-Ph-azide(HCl salt),分子式:C21H34Cl3N7O6,的相关参数信息

文章关键词:双功能螯合剂,azide叠氮 为大家介绍(CAS:N/A),试剂仅用于科学研究,不可用于人类,非药用,非食用。 分子式:C21H34Cl3N7O6 分子量:586.9 英文名称&a…

限定国家及时间|心理学老师如期赴意大利访学

S老师由于个人情况变化需要办理CSC改派,并限定了国家且要求年底出国。我们最终用意大利巴里大学的邀请函,助其成功申请了CSC改派并如期出国。 S老师背景: 申请类型: CSC访问学者 工作背景: 高校教师 教育背景&#…

Python基础知识进阶之数据爬虫

一、爬虫概述 爬虫是指利用网络抓取模块对某个网站或者某个应用中有价值的信息进行提取。还可以模拟用户在浏览器或者APP应用上的操作行为,实现程序自动化。简单来说就是我们把互联网有价值的信息都比喻成大的蜘蛛网,而各个节点就是存放的数据&#xff0…

如何写出让业务满意的性能测试报告

目录 前言 需求背景 测试报告的作用是什么? 业务团队更关注哪些内容? 输出让业务满意的性能测试报告 总结 前言 写出一份让业务满意的性能测试报告,需要充分理解和呈现测试结果,结合业务需求进行分析和解读。 这篇文章&am…

别再错过重要任务,手机日程提醒软件用哪个

你有没有过这样的经历,因为平时生活、工作中太过于忙碌,而错过重要任务的完成?相信很多人都会忘记过重要的事情,例如平时工作太忙了,而忘记了之前安排好的会议。那么在待办事项越来越多的今天,我们如何保证…

这几个APP,你认识多少

软件一:AI工具导航 功能介绍 1.书写工具 包括内容创作、语法检查、内容润色等。 2.图像工具 包括文字图片生成、插图生成、在线抠图背景去除等。 3.音频工具 包含自定义风格的音乐生成、变声、配音等。 4.视频工具 包括视频生成、文字转视频、虚拟人讲解等…

vivo 游戏黑产反作弊实践

作者:vivo 互联网安全团队 - Cai Yifan 在数字化、移动化的浪潮下,游戏产业迅速发展,尤其疫情过后许多游戏公司业务迎来新的增长点。 游戏行业从端游开始一直是黑灰产活跃的重要场景。近年来,随着互联网的发展和手机市场的不断壮…

从0到1精通自动化测试,pytest自动化测试框架,用例运行规则(二)

目录 一、用例设计原则 二、help帮助 三、按以下目录写用例 四、python -m 五、执行用例规则 六、-x 遇到错误时停止测试 七、—maxfailnum 一、用例设计原则 文件名以 test_*.py 文件和 *_test.py 以 test_ 开头的函数 以 Test 开头的类 以 test_ 开头的方法 所有的包…

前端学习——HTML

C/S架构和B/S架构 1.C/S架构:需要安装,偶尔更新,不跨平台 2.B/S架构:无需安装,无需更新,可跨平台 大型专业应用、安全性要求较高的应用,需要采用C/S架构 前端工程师主要研发B/S架构的应用——写…

智能照明控制系统助力某商业综合体实现“双碳”

摘要:智能照明是当前非常普及的一种照明控制方式。广泛使用于建筑物,景观,公共场所。本文以智能照明在商业综合体中的应用为基础,主要介绍了智能照明系统的功能与特点,系统运用的效果,在建筑自动化系统中的地位及优势等…

项目前期准备 -- 手把手教你做ssm+springboot入门后端项目黑马程序员瑞吉外卖(一)

文章目录 前言一、导学内容1.前置知识(必备)2.博客收获3.效果展示4.软件开发流程整体介绍4.瑞吉外卖整体项目介绍 二、开发环境搭建1.数据库环境搭建2.maven环境搭建 总结 前言 为了巩固所学的知识,作者尝试着开始发布一些学习笔记类的博客&…

Zoho Bigin表现亮眼,入选国际软件测评机构多项Top榜单

科技重新赋能企业发展动力,数字化转型成为降本增效的好方法。 然而真正落地到企业层面,尤其小微企业,做好数字化转型,并不是件容易的事情,需要多管齐下,长期投入时间和资金。 小微企业由于自身业务规模及…

Golang笔记:使用json包处理JSON数据

文章目录 目的Decoding(解析数据)Encoding(创建数据)总结 目的 JSON 是一种非常流行的数据交换格式,是JavaScript中原生支持的一种数据,因为其简单方便,所以也经常用在不同程序、不同语言间数据…

Linux5.6 Mysql备份与恢复

文章目录 计算机系统5G云计算第四章 LINUX Mysql备份与恢复一、数据库备份的分类1. 数据备份的重要性2.数据库备份的分类3. 常见的备份方法1)物理冷备2)专用备份工具mysqldump或mysqlhotcopy3)启用二进制日志进行增量备份4)第三方…

8.2 网络分层OSI七层模型

目录 计算机网络体系结构的形成 两台计算机要互相传送文件需解决很多问题 提出了不同体系结构 国际标准:开放系统互连参考模型 OSI/RM 但 ISO/OSI 失败了 存在两种国际标准 协议与划分层次 协议与划分层次 协议的两种形式 层次式协议结构 划分层次的概念举…

卷积计算加速方法--分块卷积

1、大尺寸卷积存在的问题 当卷积的输入太大导致内存不够用时,考虑将一大块卷积分成多个小块分别进行卷积,相当于将原始输入分成几个小的输入经过同一组卷积核分别卷积,其中每块小的输入都是原始输入的子集,每块之间互不影响&#…

OpenHarmony社区运营报告(2023年5月)

本月快讯 ● 2023年6月11-13日,2023开放原子全球开源峰会即将在北京北人亦创国际会展中心盛大开幕。2023开放原子全球开源峰会上,OpenAtom OpenHarmony(以下简称“OpenHarmony”)将通过分论坛与展览等方式,展示生态进展…

C# 特性详解

目录 特性是什么? 如何使用特性? (1).Net 框架预定义特性 (2)自定义特性 为什么要使用特性? 特性的应用 特性实现枚举展示描述信息 特性是什么? 特性(Attribute&…

划重点!超全PMP报考指南,速速收藏!

PMP证书作为项目管理专业人士的重要标志,是每一位项目经理职业发展生涯中不可或缺的证书。PMP学习不仅可以提升项目经理的项目管理水平,也可以进一步提升项目经理的个人竞争力。 一,PMP介绍 PMP(项目管理专业人士资格认证&#…