Sequelize 操作 MySQL 数据库

安装

复制代码
npm install --save sequelize

安装驱动程序:

复制代码
npm install --save mysql2

连接到数据库

要连接到数据库,必须创建一个 Sequelize 实例. 这可以通过将连接参数分别传递到 Sequelize 构造函数或通过传递一个连接 URI 来完成:

js 复制代码
const {Sequelize} = require("sequelize");
// 创建数据库连接
const sequelize = new Sequelize('jingmao', 'root', 'root', {
    host: 'localhost',
    dialect: 'mysql',
    logging: false, // 生成的sql语句不在控制台打印
})
// 测试连接
async function MyFn() {
    try {
        await sequelize.authenticate();
        console.log('Connection has been established successfully.');
    } catch (error) {
        console.error('Unable to connect to the database:', error);
    }
}

MyFn();

Sequelize 构造函数接受很多参数. 它们记录在 API 参考中.

在 app.js 中引入文件,执行测试。

js 复制代码
require('./dao/dbConnect')

Express 中使用 Sequelize

连接和初始化数据库

dbConnect.js

js 复制代码
const {Sequelize} = require("sequelize");
// 创建数据库连接
const sequelize = new Sequelize(process.env.DB_NAME, process.env.DB_USER, process.env.DB_PASSWORD, {
    host: process.env.DB_HOST,
    dialect: 'mysql',
    logging: false, // 生成的sql语句不在控制台打印
})
// 以对象的形式暴露
module.exports = sequelize;

这里使用了 dotenv 将一些环境变量写到 .env 中,将 .env 添加到 precess.env ,便于管理。

db.js

js 复制代码
// 初始化数据库
const sequelize = require('./dbConnect'); // 数据库连接实例
const adminModel = require('./model/adminModel');
const md5 = require("md5"); // 管理员模型
(async function() {
    // 同步模型和数据表
    await sequelize.sync({
        alter: true
    })
    // 如果没有数据,则初始化数据
    const adminCount = await adminModel.count()
    if (!adminCount) {
        await adminModel.create({
            loginId: 'admin',
            name: '超级管理员',
            loginPwd: md5('123456'),
        })
        console.log('初始化管理员数据成功')
    }
    console.log('数据库初始化完成')
})()

adminModel.js

js 复制代码
const {DataTypes} = require("sequelize")
const sequelize = require("../dbConnect")
// 定义数据表
module.exports = sequelize.define("admin", {
    // id 自动生成 无需手动定义
    loginId: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    loginPwd: {
        type: DataTypes.STRING,
        allowNull: false,
    },
    name: {
        type: DataTypes.STRING,
        allowNull: false
    }
}, {
    freezeTableName: true, // 禁止默认的自动复数化
    createdAt: false, // 关闭默认字段
    updatedAt: false // 关闭默认字段
})

app.js

js 复制代码
// 默认读取项目根目录下的 .env 环境变量文件
require('dotenv').config()
// 引入数据库连接
require('./dao/db')

操作数据库

js 复制代码
const adminModel = require('./model/adminModel')
module.exports.loginDao = async function(loginInfo) {
    return await adminModel.findOne({
        where: {
            loginId: loginInfo.loginId,
            loginPwd: loginInfo.loginPwd
        }
    })
}
相关推荐
软件技术NINI19 分钟前
springMvc的简单使用:要求在浏览器发起请求,由springMVC接受请求并响应,将个人简历信息展示到浏览器
数据库·mysql
SailingCoder1 小时前
MongoDB Memory Server与完整的MongoDB的主要区别
数据库·mongodb
水木石画室1 小时前
MongoDB 常用增删改查方法及示例
数据库·mongodb
旷世奇才李先生1 小时前
MongoDB 安装使用教程
数据库·mongodb
qq_339282232 小时前
mongodb 中dbs 时,local代表的是什么
数据库·mongodb
阿里云大数据AI技术2 小时前
AI搜索 MCP最佳实践
数据库·人工智能·搜索引擎
笑衬人心。3 小时前
项目中数据库表设计规范与实践(含案例)
服务器·数据库·设计规范
cpsvps3 小时前
触发器设计美国VPS:优化数据库性能的关键策略
数据库·oracle
s153353 小时前
数据结构之顺序表,链表,栈,队列
数据结构·数据库
九分源码3 小时前
基于PHP+MySQL组合开发开源问答网站平台源码系统 源码开源可二次开发 含完整的搭建指南
mysql·开源·php