在express.js项目中,使用sequelize操作数据库

在 Express.js 中使用 Sequelize 可以简化与数据库的交互。

1. 安装依赖

首先,确保你已经初始化了一个 Express 项目,并且安装了 Sequelize 及其对应的数据库驱动程序。
如:我使用的是MySQL

npm install sequelize mysql2

对于其他数据库,可以根据需要安装不同的驱动:
PostgreSQL: npm install sequelize pg pg-hstore
SQLite: npm install sequelize sqlite3

2.配置 Sequelize

在项目的根目录下创建一个 config 文件夹,并在里面创建一个 db.js 文件来初始化 Sequelize 连接。
在这里插入图片描述
具体代码

// config/db.js
const { Sequelize } = require('sequelize');

// 创建Sequelize实例,替换为你的数据库配置信息
const sequelize = new Sequelize('数据库名称(如:counter)', '数据库用户名(如:root)', '数据库密码', {
  host: 'localhost',
  dialect: 'mysql', // 或者 'postgres', 'sqlite', 'mssql'
});

module.exports = sequelize;

3. 创建模型

接下来,创建数据库模型。可以在 models 文件夹中为每个数据库表创建一个文件。

例如,创建一个 User 模型:
在这里插入图片描述
具体代码

// models/User.js
const { DataTypes } = require('sequelize');
const sequelize = require('../config/db');

const User = sequelize.define('User', {
  // 定义模型属性
  name: {
    type: DataTypes.STRING, // 类型是STRING,可变长度字符串,SQL 数据库中,通常对应的是 VARCHAR 类型
    allowNull: false, // 不允许为 NULL
  },
  email: {
    type: DataTypes.STRING,
    allowNull: false,
    unique: true, // 必须是唯一的
  },
  password: {
    type: DataTypes.STRING,
    allowNull: false,
  }
});

module.exports = User;

4. 同步数据库

var createError = require("http-errors");
var express = require("express");
const sequelize = require("./config/db");// 该行是新增代码
const User = require("./models/User"); // 该行是新增代码
var path = require("path");
var cookieParser = require("cookie-parser");
var logger = require("morgan");

var indexRouter = require("./routes/index");
var usersRouter = require("./routes/users");

var app = express();

// view engine setup
app.set("views", path.join(__dirname, "views"));
app.set("view engine", "jade");

app.use(logger("dev"));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, "public")));

// 新增代码---开始
// 同步数据库(这会根据模型创建表)
sequelize
  .sync()
  .then(() => {
    console.log("Database & tables created!");
  })
  .catch((err) => {
    console.error("Unable to connect to the database:", err);
  });

// 一个简单的用户注册路由
app.post("/users", async (req, res) => {
  try {
    // 创建用户
    const user = await User.create({
      name: "John Doe",
      email: "john@example.com",
      password: "password123",
    });

    res.status(201).json(user);
  } catch (error) {
    res.status(400).json({ error: error.message });
  }
});
// 新增代码---结束

app.use("/", indexRouter);
app.use("/users", usersRouter);

// catch 404 and forward to error handler
app.use(function (req, res, next) {
  next(createError(404));
});

// error handler
app.use(function (err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get("env") === "development" ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render("error");
});

module.exports = app;

提示:

一旦模型和表同步后,使用 Sequelize 可以很轻松地执行数据库操作,如 CRUD 操作。

创建记录: 使用 .create() 方法
查询记录: 使用 .findOne() 或 .findAll() 方法
更新记录: 使用 .update() 方法
删除记录: 使用 .destroy() 方法

5. 运行项目

npm start

6. 使用Postman,测试接口

在这里插入图片描述

7.通过Navicat Premium查看数据库

生成一个名为users的数据表

观察:通过多次尝试,发现生成数据表的名称会多加一个s,如homes

			User 变为 users
			Home 变为 homes

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/dcf8c99c6dd746fe986076a2bb2b68c1.png

在这里插入图片描述

尝试成功,满足了好奇心!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值