node.js使用Sequelize ORM操作数据库
一、什么是ORM
ORM是在数据库和编程语言之间建立一种映射关系,这样可以让我们有非常简单的代码,来实现各种数据库的操作。
例如:使用mysql去查找表(表名称为Articles)
SELECT * FROM `Articles`;
但是我们使用ORM的话,就有更便捷的方法去查找表
Article.all()
Article,表示先找到Article这个模型。注意下,这里Article是单数形式,这并不是我写错了,而是 ORM 的就这么规定的。模型名是单数,对应的表名是复数。这样子,它就会自动找到Articles表上。all(),就是查询所有的数据了。整行的意思就是,查询Articles表的所有数据。
同样的,如果我想查询id=2的这条记录,也不用写
SELECT * FROM `Articles` WHERE `id`=2;
而会改为
Article.findByPk(2)
这里的findByPk,里面的Pk,就是primary key,也就是主键的缩写。我们表里id就是主键,说白了就是通过id来查找数据。
大家看,这样使用ORM来操作数据库后,明显要比写SQL简单的太多了,再也不用背那么多可恶的SQL语句了。但这也不是说用了ORM以后,就一点也不用懂SQL语句了。ORM它只是把我们写的代码,自动转换成SQL了再运行,在底层,实际上一样跑的还是SQL语句。
而且当我们开发中碰到问题了,要调试错误,依然要看命令行里面运行的SQL语句。所以就算开发中不写SQL,也一定要能看懂是什么意思。
二、配置Sequelize ORM
1.在命令行中全局安装
npm i -g sequelize-cli
2.接着确保命令行是在当前项目的命令行里,还要安装当前项目所依赖的sequelize包和对数据库支持依赖的mysql2
npm i sequelize mysql2
3.初始化项目
sequelize init

三、配置完成后的目录结构

- config:是配置的意思,这里放的也就是
sequelize所需要的连接数据库的配置文件。 - migrations:是迁移的意思,如果你需要对数据库做新增表、修改字段、删除表等等操作,就需要在这里添加迁移文件了。而不是像以前那样,使用客户端软件来直接操作数据库。
- models:这里面存放的是模型文件,当我们使用
sequelize来执行增删改查时,就需要用这里的模型文件了。每个模型都对应数据库中的一张表。 - seeders,是存放的种子文件。一般会将一些需要添加到数据表的测试数据存在这里。只需要运行一个命令,数据表中就会自动填充进一些用来测试内容的了。
四、配置config.js
{"development": {"username": "root","password": "yourpassword","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"}
}
第一个要改的就是密码,修改成docker配置里,我们设定的密码。接着要改的是数据库的名字,改为clwy_api_development。
最下面,还要加上时区的配置,因为我们中国是在+8区。这样在查询的时候,时间才不会出错。
那么同样的,也简单的给test和production也调整一下。
五、使用ORM创建一个表
sequelize model:generate --name Article --attributes title:string,content:text
打开models/article.js。可以看到,在模型文件夹中,出现了一个叫做Article的模型,它里面有标题和内容。
标题是字符串类型,对应到 MySQL 数据库里,它就会自动变成varchar。内容部分,则是text类型。
现在就只需要知道,模型就是用来操作数据库的,就是因为有这个文件的存在,我们后面才能使用Article.all()
六、迁移文件和运行迁移
1、迁移文件
看看migrations文件夹,里面出现了一个由当前时间,加上create-article命名的文件,这个文件就是迁移文件了。它的作用就是用来创建、修改表的。看到这里,在up部分。我们通过createTabel,创建了一个叫做Articles的表。

接着往下看,这些就是定义了Articles这张表里面所拥有的字段了,比方说id、title、content,这些外还出现了两个时间字段createdAt和updatedAt。
这两个字段,当在新增或修改数据的时候,sequelize会自动的帮我们填写的。
2、运行迁移
sequelize db:migrate
打开数据库客户端,刷新一下,可以看到Articles表又神奇的出现了。看一看结构选项卡,里面的字段和我们当时自己手动创建的完全一样,而且还多了两个时间字段。这就是迁移文件的作用了。
另外一张表SequelizeMeta是我们运行迁移命令时,自动生成的。这张表里记录了当前已经跑过了哪些迁移,这样当你再次运行sequelize db:migrate时,已经运行过的迁移文件,就不会重复再次执行了。
七、种子文件
现在表也有了,下一步就是要填充一些在开发中用来测试的数据了。当然你可以用手动往里面一点点填,但很多情况我们做测试,可能需要非常多的数据。例如我希望数据库里有 100 篇文章,这时候,我们一条条的录入也太笨了点。最简单的方法就是使用种子文件了。再来试试这条命令
sequelize seed:generate --name article
完成后,在seeds目录,就看到刚才命令新建的种子文件了。同样也是分为两个部分,up部分用来填充数据,down部分是反向操作,用来删除数据的。
先来看up部分,默认生成的代码里,给了我们一个案例。很明显,它这里是往People表里,插入了一点儿数据。
await queryInterface.bulkInsert('People', [{name: 'John Doe',isBetaMember: false
}], {});
我们可以参考它的写法,改为往Articles表里插入数据。
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, {});
},
运行种子
sequelize db:seed --seed xxx-article
后边的文件名字每个人的创建时间都不同,文件名字也不同,详细看seeders下生成的文件名

八、总结

相关文章:
node.js使用Sequelize ORM操作数据库
一、什么是ORM ORM是在数据库和编程语言之间建立一种映射关系,这样可以让我们有非常简单的代码,来实现各种数据库的操作。 例如:使用mysql去查找表(表名称为Articles) SELECT * FROM Articles;但是我们使用ORM的话&…...
STM32-Modbus协议(一文通)
Modbus协议原理 RT-Thread官网开源modbus RT-Thread官方提供 FreeModbus开源。 野火有移植的例程。 QT经常用 libModbus库。 Modbus是什么? Modbus协议,从字面理解它包括Mod和Bus两部分,首先它是一种bus,即总线协议,和…...
100. 不同方向的投影视图
本节课给大家讲解,通过UI按钮界面交互改变threejs相机的观察视角。 x轴方向观察 // 通过UI按钮改变相机观察角度 document.getElementById(x).addEventListener(click, function () {camera.position.set(500, 0, 0); //x轴方向观察camera.lookAt(0, 0, 0); //重新…...
Appium中的api(三)
目录 Appium中的api(三) 1.输入和清空内容 1--输入内容 2--清空内容 2.获取文本内容 3.获取文本位置 4.获取文本的大小(即获取控件的宽和高) 5.滑动api 6.拖拽api 7.如何获取手机分辨率 8.如何截图 9.模拟按键事件api 10.操作通知栏 案例:App自动化模拟 …...
踩坑:关于使用ceph pg repair引发的业务阻塞
概述 在某次故障回溯中,发现引发集群故障,slow io,pg stuck的罪魁祸首竟是做了一次ceph pg repair $pgid。然而ceph pg repair作为使用频率极高的,用来修复pg不一致的常用手段,平时可能很少注意其使用规范和可能带来的…...
瞬间升级!电子文档华丽变身在线题库,效率翻倍✨
👋嘿小伙伴们,有个超赞的秘籍要告诉你们——土著刷题能将你的电子文档一键变身在线题库!😉 你还没发现这个宝藏功能吗?快来瞧瞧! 🌟是不是常被一堆电子版的学习资料搞得头昏脑涨,学习…...
如何动态改变本地的ip
在当今数字化时代,网络连接已成为我们日常生活和工作中不可或缺的一部分。无论是出于隐私保护、突破地域限制,还是为了测试和优化网络应用,动态改变本地IP地址的需求日益增多。本文将详细介绍如何安全、有效地实现这一目标,旨在帮…...
Spring Boot框架在中小企业设备管理中的创新应用
4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…...
Ceph入门到精通-Osd db扩容
ceph-bluestore-tool 是一个在 BlueStore 实例上执行低级管理操作的实用程序。 以下命令可用于 ceph-bluestore-tool 语法 ceph-bluestore-tool COMMAND [ --dev DEVICE … ] [ -i OSD_ID ] [ --path OSD_PATH ] [ --out-dir DIR ] [ --log-file | -l filename ] [ --deep ]c…...
windows msvc2017 x64编译AWS SDK CPP库
在本文中,我们将介绍如何编译AWS SDK C库,以便在您的项目中使用。AWS SDK C库提供了与Amazon Web Services交互的接口,允许您在C应用程序中使用AWS服务。 一、准备工作 在开始编译AWS SDK C库之前,请确保您的系统已经安装了以下…...
铜业机器人剥片 - SNK施努卡
SNK施努卡有色行业电解车间铜业机器人剥片 铜业机器人剥片技术是针对传统人工剥片效率低下、工作环境恶劣及生产质量不稳定的痛点而发展起来的自动化解决方案。 面临人工剥片的诸多挑战,包括低效率、工作环境差、人员流动大以及产品质量控制不精确等问题。 人工剥片…...
非接触式竖向位移、水平位移视频实时在线监测的设备分类及选型
前言 视觉是人工智能正在快速发展的一个分支,简单说来,机器视觉就是用机器代替人眼来做测量和判断。在结构健康自动化监测方面,机器视觉采用光学图像结合智能算法和物联网技术,利用先进的智能靶标识别及亚像素处理等技术ÿ…...
Svelte 5 正式发布:新一代前端框架!
10 月 22 日,Svelte 5 正式发布!该版本带来的更新主要包括: 重写框架:Svelte 5 是从头开始重写的,使得应用更快、更小、更可靠,并且代码更一致和符合习惯。 向后兼容:Svelte 5 几乎完全向后兼容…...
85.【C语言】数据结构之顺序表的中间插入和删除及遍历查找
目录 3.操作顺序表 1.分析中间插入函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLInsert函数的声明 运行结果 2.分析中间删除函数 函数的参数 代码示例 图片分析 main.c部分改为 在SeqList.h添加SLErase函数的声明 运行结果 承接84.【C语…...
触觉智能Purple Pi OH鸿蒙开发板成功适配OpenHarmony5.0 Release,开启新征程!
10月22日,触觉智能Purple Pi OH鸿蒙开发板迎来了重大系统版本升级,成功适配OpenHarmony5.0 Release,为嵌入式开发者和科技爱好者们带来了全新的机遇与挑战! 触觉智能 Purple Pi OH 开发板一直以来都以其高品质和超高性价比而著称。…...
分布式解决方案---分布式ID
目录 是什么 特点 全局唯一 高并发 高可用 怎么做 实现方案 是什么 分布式ID是指在分布式系统中生成的唯一标识符。由于分布式系统的特点,多个节点可能会同时生成ID,因此需要确保每个ID在整个系统中是唯一的。 重点就是唯一性!&#x…...
httpd服务
文章目录 1、搭建一个网络yum源2、基于域名访问的虚拟主机3、基于端口来访问域名4、搭建个人网站5、加密访问显示自定义网页内容 1、搭建一个网络yum源 [roottest01 conf.d]# cat repo.conf <virtualhost *:80>documentroot /var/www/html/ServerName 10.104.43.154ali…...
Linux系统安装Redis详细操作步骤(二进制发布包安装方式)
安装方式介绍 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式特点二进制发布包安装软件已经针对具体平台编译打包发布,只要解压,修改配置即可rpm安装软件已经按照redhat的包管理规范进…...
Jenkins和Gitlab整合构建CI/CD流水线
配置环境 虚拟机建议4G起步 192.168.58.199 192.168.58.200 部署Jenkins 部署Jenkins参考这篇文章:Jenkins安装部署_connecting to pkg.jenkins.io (pkg.jenkins.io)|151.-CSDN博客 安装完毕之后根据下图操作 选择git,添加git仓库克隆url,选…...
14 C语言中的关键字
C语言中的关键字 在C语言中,关键字是一些预定义的单词,它们具有特殊的意义和用途。这些关键字不能用作标识符,比如变量名、函数名等,因为它们被保留用于特定的语言结构和操作。 关键字的分类 C语言的关键字可以分为几个主要类别…...
HsMod终极指南:50+功能全面解锁炉石传说模改插件
HsMod终极指南:50功能全面解锁炉石传说模改插件 【免费下载链接】HsMod Hearthstone Modification Based on BepInEx 项目地址: https://gitcode.com/GitHub_Trending/hs/HsMod HsMod是一款基于BepInEx框架开发的炉石传说模改插件,通过50多项实用…...
JetBrains IDE试用期重置工具:30天免费试用无限续杯指南
JetBrains IDE试用期重置工具:30天免费试用无限续杯指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter 你是否遇到过JetBrains IDE试用期到期,却还没准备好购买许可证的困扰?i…...
手机上的Linux:用Termux 0.118.0打造Python 3.10.4爬虫环境,实测下载‘拷贝漫画’全流程
在安卓手机上构建Python爬虫环境:Termux实战指南 你是否遇到过这样的场景:在地铁上突然想到一个绝妙的爬虫点子,但手边只有一部手机?或者想在平板上直接下载漫画却苦于没有合适的工具?Termux正是解决这些痛点的神器。这…...
使用taotaokencli工具一键配置多开发环境下的ai代理
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 使用 TaoToken CLI 工具一键配置多开发环境下的 AI 代理 基础教程类,介绍如何通过 npx 或全局安装 TaoToken 提供的命令…...
Freewall跨浏览器兼容性:解决IE8+布局问题的完整方案
Freewall跨浏览器兼容性:解决IE8布局问题的完整方案 【免费下载链接】freewall kombai/freewall: Freewall 是一个灵活、响应式的网格布局引擎,可用于创建具有自适应布局功能的网页或应用组件,尤其适合于图片墙、瀑布流布局等场景。 项目地…...
中标麒麟OS访问Win10共享文件夹,手把手教你搞定SMB连接(附终端挂载命令)
中标麒麟OS与Win10共享文件夹互通实战指南 在国产化办公环境逐步普及的今天,中标麒麟OS作为主流国产操作系统之一,与Windows系统之间的文件共享成为日常办公刚需。本文将针对零基础用户,提供两种高效稳定的SMB共享连接方案:图形化…...
代码评审可视化:基于图计算与数据驱动提升团队协作效率
1. 项目概述:从代码评审的“混沌”到“清晰”如果你是一名开发者,或者是一名技术团队的负责人,那么“代码评审”这个词对你来说一定不陌生。它几乎是现代软件工程中保障代码质量、促进知识共享、统一编码风格的核心环节。然而,一个…...
射频高手到底强在哪里?尤其做5G,真正拼的是这套底层功夫
🚀《射频高手到底强在哪里?尤其做5G,真正拼的是这套底层功夫》🎯射频不是“接个天线、调个匹配”这么简单。 真正的射频高手,脑子里装的是:电磁场 传输线 调制解调 噪声 PA 天线 认证测试 系统干扰链…...
可视化大屏怎么做?可视化大屏工具你会用吗?
可视化大屏早已不只是技术人员的专属,越来越多的运营、产品和市场人也开始尝试,但是常常陷入各种问题:比如硬件效果一般、数据堆积没重点、动效杂乱干扰信息传达……其实归根结底,这些问题都指向一个核心:缺少一个专业…...
2026年高口碑GNSS变形监测一体机推荐:提升水库安全解决方案
随着基础设施监测需求的上升,单北斗形变监测一体机逐渐成为各大工程的首选。利用GNSS桥梁形变监测技术、这些设备能够实时监控水库和大坝重要结构的安全情况。单北斗GNSS应用在数据传输和处理上,展现出高效性与可靠性。用户在选择时应关注不同型号的价格…...
