前言
学习一下NodeJS怎么使用Sequelize怎么查询数据库数据
一、Sequelize是什么?
Sequelize 是一个基于 promise 的 Node.js ORM,
二、搭建项目
1.安装过程
npm i -g sequelize-cli //全局安装sequelize-clinpm i sequelize mysql2 //安装sequelize和mysql2sequelize 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 = 100for (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.paramsconst 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.paramsconst 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.queryconst 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.paramsconst 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的简单了解,之后有更深的了解再继续分享