欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 社会 > Sequelize ORM sql 语句工具

Sequelize ORM sql 语句工具

2024/12/24 16:26:20 来源:https://blog.csdn.net/i_Satan/article/details/144618133  浏览:    关键词:Sequelize ORM sql 语句工具

Sequelize ORM sql 语句工具

sequelize orm中文网
视频学习@长乐未央

初始化配置

Sequelize orm 配置文章@落日沉溺于海

  1. 在命令行中全局安装
npm i -g sequelize-cli
  1. sequelize 执行需要匹配 mysql2 对应的依赖(安装 mysql2)
npm i sequelize mysql2
  1. 初始化项目
sequelize init
  1. 熟悉初始化项目后的项目结构
  • config:时配置的意思,这里放的也就是 sequelize 所需要的连接数据库的配置文件
  • migrations:是迁移的意思,如果你需要对数据库做新增表,修改字段,删除表等操作,就需要在这里添加迁移文件了。而不是像以前那样,使用客户端软件直接操作数据库
  • models:这里面存放的模型文件,当我们使用 sequelize 来执行增删改查时,就需要用这里的模型文件了,每个模型都对应数据库中的一张表。
  • seeders:是存放种子文件。一般会将一些需要添加到数据表的测试数据存放在这里。只需要执行一个命令,数据表中就回自动填充进一些用来测试内容的了。
  1. 配置 config.js 文件
  • 第一个要改的就是密码,修改成 docker 配置里,我们设定的密码。接着要改的是数据库的名字,改为 clwy_api_development。
  • 最下面,还要加上时区的配置,因为我们中国是在+8 区。这样在查询的时候,时间才不会出错。
  • 那么同样的,也简单的给 test 和 production 也调整一下。

注意:json 文件中都必须为字符串要不有可能会报错。

  • The “data” argument must be one of type string, TypedArray, or DataView. Received type number (我将password配置为了 number,所以有了这个报错。改成 string 类型即可。)
{"development": {"username": "root","password": "","database": "yourmysql","host": "127.0.0.1","dialect": "mysql","timezone": "+08:00"},"test": {"username": "root","password": null,"database": "yourtestmysql","host": "127.0.0.1","dialect": "mysql","timezone": "+08:00"},"production": {"username": "root","password": null,"database": "yourproductionmysql","host": "127.0.0.1","dialect": "mysql","timezone": "+08:00"}
}
  1. 使用 ORM 创建一个表
sequelize model:generate --name Article --attributes title:string,content:text
  1. 运行迁移
sequelize db:migrate
  1. 种子文件
sequelize seed:generate --name article

完成后,在 seeds 目录,就看到刚才命令新建的种子文件了。同样也是分为两个部分,up 部分用来填充数据,down 部分是反向操作,用来删除数据的。

种子文件改写代码如下

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, {});
},
  1. 运行种子
sequelize db:seed --seed xxx-article

sequelize 简化接口封装案例

  1. 在执行完上面操作(创建models,运行种子文件)后,进行下面接口封装

/admin/articles 文件代码

const express = require("express");
const router = express.Router();
const { Article } = require("../../models");
const { Op } = require("sequelize");
/* GET home page. */router.get("/getArticlesList", async function (req, res, next) {try {const query = req.query;const currentPage = Math.abs(Number(query.currentPage) || 1);const pageSize = Math.abs(Number(query.pageSize) || 10);/*变量定义offset 从那一页开始limit 查询多少条currentPage 当前页分页查询公式offset = (currentPage - 1) * limit*/const offset = (currentPage - 1) * pageSize;const condition = {// order: [["id", "DESC"]], // 根据id 倒序排列。数组套数组 是可以根据多个字段进行排列limit: pageSize,offset,};// 根据所传参数进行 模糊查询if (query.title) {condition.where = {title: { [Op.like]: `%${query.title}%` },};}// 查询所有参数// const list = await Article.findAll(condition);// 根据数量查询const { count, rows } = await Article.findAndCountAll(condition);//   const list = [];res.json({code: 200,data: {list: rows,pagination: { currentPage, pageSize, totalCount: count }, // 返回总页数和当前页码,用于前端分页ti},message: "获取文章列表成功",});} catch (err) {res.json({ code: 500, message: err });}
});module.exports = router;// 创建文章router.post("/createArticle", async function (req, res, next) {// 白名单过滤 ,避免用户乱填 idconst body = {title: req.body.title,content: req.body.content,};const article = await Article.create(body);res.json({code: 201,message: "文章创建成功",data: article,});
});// 删除文章router.delete("/deleteArticle/:id", async function (req, res) {const id = req.params.id;// 查询文章 ,看是否存在const article = await Article.findByPk(id);if (!article) {res.json({ code: 404, message: "文章不存在" });return false;}await article.destroy(id);res.json({ status: true, code: 204, message: "删除成功" });
});// 更新文章router.put("/updateArticle/:id", async function (req, res) {const id = req.params.id;// 查询文章 ,看是否存在const article = await Article.findByPk(id);console.log("article", article);if (!article) {res.json({ code: 404, message: "文章不存在" });return false;}// 白名单过滤 ,避免用户乱填 idconst body = {title: req.body.title,content: req.body.content,};await article.update(body);res.json({ status: true, code: 204, message: "更新成功", data: article });
});

sequelize 指令执行相关报错

  1. Unable to resolve sequelize package in C:\Users\ , 无法解析 C:\Users\中的 sequelize 包. 依次执行下面指令
    • npm install sequelize-cli -g
    • sequelize -h ,显示 Unable to resolve sequelize package in C:\Users\
    • npm install --save sequelize

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com