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
        }
    })
}
相关推荐
一只自律的鸡26 分钟前
【MySQL】第二章 基本的SELECT语句
数据库·mysql
liliangcsdn2 小时前
如何使用python创建和维护sqlite3数据库
数据库·sqlite
TDengine (老段)8 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)8 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
@yanyu6668 小时前
idea中配置tomcat
java·mysql·tomcat
安当加密8 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a8 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽9 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康9 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy9 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎