Sequelize入门及简单的增删改查

前言

学习一下NodeJS怎么使用Sequelize怎么查询数据库数据


一、Sequelize是什么?

Sequelize 是一个基于 promise 的 Node.js ORM,

二、搭建项目

1.安装过程

npm i -g  sequelize-cli //全局安装sequelize-cli

npm i  sequelize mysql2  //安装sequelize和mysql2

sequelize init  //初始化模型

初始化成功之后会自动生成这四个文件夹 

 

2.配置数据库信息,修改生成的文件夹之中的config\config.json

3.创建表

sequelize model:generate --name Article --attributes title:string,content:text
//Article :表名
//title,content:表内容
//string,text:表内容类型

执行成功之后如下且会在这两个文件夹中生成这两个js

 

4.向数据库创建表

sequelize db:migrate

Navicat中就会创建这两个表 

 

5.通过种子文件大量新增数据 

sequelize seed:generate  --name article

//article:表名

运行成功之后将会在seeders文件中生成这个命名格式的js文件 

 在这个文件中编写新增数据的代码

'use strict';

/** @type {import('sequelize-cli').Migration} */
module.exports = {
  async up(queryInterface, Sequelize) {
    const articles = []
    const counts = 100
    for (let i = 1; i <= counts; i++) {
     //表内的相关字段 
      const article = {
        title: `文章标题${i}`,
        content: `文章内容${i}`,
        createdAt: new Date(),
        updatedAt: new Date()
      }
      articles.push(article)
    }
    await queryInterface.bulkInsert('Articles',
      articles,
      {});

  },

  async down(queryInterface, Sequelize) {
    /**
     * Add commands to revert seed here.
     *
     * Example:
     * await queryInterface.bulkDelete('People', null, {});
     */
    await queryInterface.bulkDelete('Articles', null, {});
  }
};
sequelize db:seed  --seed 20240619135935-article

//20240619135935-article:这个时seeders新增的js文件名

 运行之后可在Navicat中查看新增的数据

三.sequelize增删改查

在routes文件夹中创建一个文件夹,可自行命名,我命名为admin,并且在admin文件夹中新增一个articles.js

var express = require('express');
var router = express.Router();
const { Article } = require('../../models');

module.exports = router;

在根目录中的app.js中新增

var adminRouter = require('./routes/admin/articles');


app.use('/admin/articles', adminRouter);

1.新增 

articles.js

router.post('/', async function (req, res, next) {
    try {
        const article = await Article.create(req.body)
        res.status(200).json({
            code: 200,
            message: "新增成功",
            data: article
        })
    }
    catch (error) {
        res.status(500).json({
            code: 500,
            message: "新增失败",
            errors: [error.message]

        })
    }
})

2.删除

router.delete('/:id', async function (req, res, next) {
    try {
        const { id } = req.params
        const article = await Article.findByPk(id)
        if (article) {
            await article.destroy()
            res.json({
                status:true,
                message:"删除成功"
            })
        } else {
            res.status(404).json({
                code: 404,
                message: "查询不到信息"
            })
        }

    }
    catch (error) {
        res.status(500).json({
            code: 500,
            message: "删除失败",
            errors: [error.message]

        })
    }
})

3.更新

router.put('/:id', async function (req, res, next) {
    try {
        const { id } = req.params
        const article = await Article.findByPk(id)
        if (article) {
            await article.update(req.body)
            res.json({
                status:true,
                message:"更新成功",
                data:article
            })
        } else {
            res.status(404).json({
                code: 404,
                message: "查询不到信息"
            })
        }

    }
    catch (error) {
        res.status(500).json({
            code: 500,
            message: "删除失败",
            errors: [error.message]

        })
    }
})

4.查看所有内容(带有模糊查询)

router.get('/', async function (req, res, next) {
    try {
        const query =req.query
        const condition = {
            order: [['id', 'DESC']]
        }
        if(query.title){
            condition.where={
                title:{
                    [Op.like]:`%${query.title}%`
                }
            }
        }
        const articles = await Article.findAll(condition)
        res.json({
            code: 200,
            message: "查询成功",
            data: {
                articles
            }
        });
    } catch (error) {
        res.status(500).json({
            code: 500,
            message: "查询失败",
            errors: [error.message]

        })
    }

});

5.根据id查询相关内容

router.get('/:id', async function (req, res, next) {
    try {
        const { id } = req.params
        const article = await Article.findByPk(id)
        if (article) {
            res.json({
                code: 200,
                message: "查询成功",
                data: {
                    article
                }
            });
        } else {
            res.status(404).json({
                code: 404,
                message: "未查询到数据"
            })
        }

    } catch (error) {
        res.status(500).json({
            code: 500,
            message: "查询失败",
            errors: [error.message]

        })
    }
})

四.总结

    由于我是刚入门NodeJS,所以还只是对sequelize的简单了解,之后有更深的了解再继续分享

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值