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

您所在的位置:网站首页 nodejs作为后端怎么测试与前端的连接 Node搭建前端服务Mysql数据库交互一篇搞定

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

2023-12-29 00:05| 来源: 网络整理| 查看: 265

目录

介绍

安装环境及数据准备

代码示例

   mysql连接工具类

测试方法文件

单表总量查询

 单表条件查询

新增数据

 修改

删除

​编辑 ​编辑

联表查询 

 联表过滤

 搭配express服务搭建api使用

介绍

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

安装环境及数据准备

电脑需具备nodejs环境

安装必需模块

npm install mysql

npm install mysql2

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

区别:

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

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

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

优点:

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

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访问:

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

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3