Skip to content

NodeJs 增删改查数据库示例

Express 介绍

Express 是基于 Node.js 平台,快速、开放、极简的 Web 开发框架。通俗的理解:Express 的作用和 Node.js 内置的 http 模块类似,是专门用来创建 Web 服务器的。

创建所需要的库和表

建立库 esp32_records

sql
CREATE DATABASE esp32_records
  DEFAULT CHARACTER SET utf8mb4
  DEFAULT COLLATE utf8mb4_general_ci;

建立表 esp32_data

sql
create table `esp32_data`(
  id int(8) primary key auto_increment comment '主键',
  sensor_name varchar(30) not null comment '传感器名',
  sensor_value int(8) not null comment '值',
  create_time DATETIME DEFAULT CURRENT_TIMESTAMP comment '创建时间',
  update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment '修改时间'
);

安装 Express 脚手架和创建 Express 项目

全局安装Express脚手架
bash
npm install -g express-generator
创建项目
bash
express 项目名
设置淘宝镜像
bash
npm config set registry https://registry.npmmirror.com
安装依赖
bash
npm install
启动项目
bash
npm start
全局安装 nodemon - 作用:监控 node.js 源代码的任何变化和自动重启你的服务器,不用每次改完代码手动重启
bash
npm install -g nodemon
在 package.json 文件中更改
json
{
  "start": "node ./bin/www", 
  "start": "nodemon ./bin/www"
}
安装 mysql 依赖

仅适用于 MySQL5.7 版本,MySQL5.7 版本在群文件有提供下载

bash
npm install mysql

代码编辑器

下载编辑器

vscode 官网

腾讯管家 vscode 下载界面 速度快,选择立即下载-直接下载

安装一些必备插件(在 vscode 插件 tab 页下载)

必备插件名

Chinese (Simplified) (简体中文)

ES7+ React/Redux/React-Native snippets

Prettier - Code formatter

Material Icon Theme

操作数据库

MySQL 配置文件

js
// options/mysqlOption.js
const mysql = require("mysql");
let options = {
  host: "localhost",
  //port:"3306",// 可选,默认3306
  user: "root", // 这里改成你自己的数据库账号
  password: "admin", // 这里改成你自己的数据库密码
  database: "esp32_records", // 这里改成你自己的数据库的名字 不是表名
};

//创建与数据库进行连接的连接对象
const connection = mysql.createConnection(options);
module.exports = connection;

连接 MySQL

js
connection.connect(err => {
  if (!err) {
    // 数据库连接成功
    console.log("数据库连接成功");
  }
});

测试用的 sql 语句

sql
SELECT * FROM esp32_data

INSERT INTO esp32_data (sensor_name,sensor_value) VALUES ('SMOKE', 20);

UPDATE esp32_data SET sensor_value = 60 WHERE id = 1;

DELETE FROM esp32_data WHERE id = 1

执行 sql 语句方法

注:方便教学,这里采用简单的直接拼接方式,但是可能会有 sql 注入的风险,有兴趣的小伙伴可以去了解一下用 Knex.js 来操作数据库。

什么是 SQL 注入

SQL 注入是一种非常常见的数据库攻击手段,SQL 注入漏洞也是网络世界中最普遍的漏洞之一。大家也许都听过某某学长通过攻击学校数据库修改自己成绩的事情,这些学长们一般用的就是 SQL 注入方法。

SQL 注入其实就是恶意用户通过在表单中填写包含 SQL 关键字的数据来使数据库执行非常规代码的过程。简单来说,就是数据「越俎代庖」做了代码才能干的事情。

这个问题的来源是,SQL 数据库的操作是通过 SQL 语句来执行的,而无论是执行代码还是数据项都必须写在 SQL 语句之中,这就导致如果我们在数据项中加入了某些 SQL 语句关键字(比如说 SELECT、DROP 等等),这些关键字就很可能在数据库写入或读取数据时得到执行。

js
connection.query("sql语句", (err, result, fields) => {
  if (!err) {
    // 执行成功
    return;
  }
  // 执行失败
});

格式化时间工具函数

js
/*  ISO 8601 时间格式转换为其他自定义格式 */
function handleData(isoString) {
  const date = new Date(isoString);

  const formattedDate = `${date.getFullYear()}-${(date.getMonth() + 1)
    .toString()
    .padStart(2, "0")}-${date.getDate().toString().padStart(2, "0")}`;
  const formattedTime = `${date.getHours().toString().padStart(2, "0")}:${date
    .getMinutes()
    .toString()
    .padStart(2, "0")}:${date.getSeconds().toString().padStart(2, "0")}`;

  return `${formattedDate} ${formattedTime}`;
}

module.exports = handleData;

powered by 天人之际工作室