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

目录

介绍

安装环境及数据准备

代码示例

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

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

 

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端连接数据库通常需要使用后端语言(例如 PHP、Python、Java 等)来处理数据库的连接和操作,前端可以通过发送请求到后端来实现与数据库交互。以下是一个使用 PHP 连接数据库并实现登录的例子: 1. 创建数据库表 首先,需要在数据库中创建一个用户表,包含用户名和密码两个字段。 CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(255) NOT NULL, `password` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 2. 创建登录页面 在前端创建一个登录页面,包含用户名和密码输入框以及登录按钮。 ``` <form method="post" action="login.php"> <label>Username:</label> <input type="text" name="username" required><br> <label>Password:</label> <input type="password" name="password" required><br> <input type="submit" value="Login"> </form> ``` 3. 创建后端处理登录请求的 PHP 文件 在后端创建一个 PHP 文件,处理登录请求,连接数据库,验证用户名和密码是否正确。如果登录成功,则跳转到首页。 ``` <?php $conn = mysqli_connect("localhost", "username", "password", "database"); if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } if ($_SERVER["REQUEST_METHOD"] == "POST") { $username = $_POST["username"]; $password = $_POST["password"]; $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) == 1) { header("Location: index.php"); exit(); } else { echo "Invalid username or password."; } } mysqli_close($conn); ?> ``` 以上是一个简单的前端连接数据库登录界面的实现例子。需要注意的是,为了安全考虑,密码应该使用加密方式存储在数据库中,且密码验证应该使用加密后的值进行比较。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值