Sequelize:Node.js 中的强大 ORM 框架

这篇具有很好参考价值的文章主要介绍了Sequelize:Node.js 中的强大 ORM 框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

❤️砥砺前行,不负余光,永远在路上❤️

前言

在现代的 Web 开发中,与数据库进行交互是常见的任务。为了简化和加速与数据库的交互过程,许多开发人员选择使用 ORM(对象关系映射)框架。ORM 框架提供了一种将数据库记录映射到对象的方式,使开发人员可以使用面向对象的编程方式来处理数据库操作。在 Node.js 生态系统中,Sequelize 是一个备受青睐的 ORM 框架,本文将介绍 Sequelize 的特性和用法。

优势:提高效率,不用SQL即可完成数据库操作。

那什么是 Sequelize?

Sequelize 是一个基于 Promise 实现的 Node.js ORM 框架,用于与关系型数据库进行交互。它支持多种数据库,包括 PostgreSQL、MySQL、SQLite 和 MSSQL。Sequelize 提供了强大的功能,如模型定义、关联、事务管理、查询构建和数据验证等。

主要特性:

1、模型定义和映射:

Sequelize 允许您通过定义模型来映射数据库表。模型是 JavaScript 类,代表了一个数据库表的结构和行为。通过模型,您可以轻松地进行 CRUD(创建、读取、更新、删除)操作。

2、关联和联接:

Sequelize 提供了丰富的关联功能,使您能够在不同的模型之间建立关系,如一对一、一对多和多对多关系。这使得在查询时可以轻松地跨表进行联接操作,提供了更强大的数据检索和操作能力。

3、事务管理:

Sequelize 支持事务,这是在复杂的数据库操作中至关重要的功能。通过使用事务,您可以确保一系列数据库操作的原子性,要么全部成功,要么全部失败。这对于确保数据的完整性和一致性非常重要。

4、查询构建:

Sequelize 提供了强大而灵活的查询构建功能,使您可以使用链式调用方式构建复杂的查询。您可以使用简单的方法链和条件表达式来过滤、排序、分页和聚合数据,以满足各种查询需求。

5、数据验证:

Sequelize 具有内置的数据验证机制,可以在模型定义中指定字段的验证规则。这样,您可以确保在将数据保存到数据库之前进行有效性检查,并且可以轻松地处理输入数据的验证和清理。

详细使用示例:

下面是一个简单的示例,展示了如何使用 Sequelize 进行数据库操作:

一、创建数据库连接实例

我这里简单的对Sequelize 处理了一下,将配置单独提取到了config文件下

/*
 * @Date: 2023-05-24 09:23:47
 * @LastEditTime: 2023-05-24 16:09:13
 */
//1.导入Sequelize模块
const Sequelize = require('sequelize')
const { dbConfig } = require('../config/index')
const { database, user, password, options } = dbConfig


//new Sequelize('数据库名','用户名','密码',{配置信息})
//2.使用sequelize模块配置和数据库的连接信息:创建连接数据库的对象
const mysql_Sequelize = new Sequelize(database, user, password, options)
//3.导出数据库的连接对象
module.exports = mysql_Sequelize;

二、定义模型

一般在项目中会统一管理Models 在项目根目录有一个models文件夹,通过index集中管理,单独的models文件如下图。

1、models/index.js文件
const coon = require('../utils/sequelize')
const { Sequelize } = require("sequelize");


const User = require('./user')(coon, Sequelize) //用户表
const Room = require('./room')(coon, Sequelize) //房间表
const Record = require('./record')(coon, Sequelize) //房间记录表
const RoomUser = require('./room_user')(coon, Sequelize)
const Standings = require('./standings')(coon, Sequelize)  //战绩表

module.exports = {
	User, Room, RoomUser, Record, Standings
};

nodejs orm,node.js,数据库,mysql

nodejs orm,node.js,数据库,mysql

三、针对数据库已经建好的表可以使用sequelize-auto 自动生成模型

使用方法如下:

1、安装sequelize-auto,以及mysql2
cnpm install sequelize-auto
cnpm install mysql2

//or

yarn add sequelize-auto
yarn add mysql2
2、终端执行指令生成models
sequelize-auto -h 127.0.0.1 -d play-record -u root -x  123456
sequelize-auto -h 主机地址 -d 数据库名称 -u 用户名 -x  密码

执行完成命令会在当前目录生成一个models/ 下面的所有 文件就是我们需要的。
nodejs orm,node.js,数据库,mysql

四、express中引入使用

router文件中引入 定义好的models即可。

const { literal, Op, Sequelize } = require("sequelize");
const { User, Room, RoomUser, Record, Standings } = require('../models/index')

nodejs orm,node.js,数据库,mysql

五、Sequelize实现增删改查

1、创建数据

创建数据使用create()

router.post('/insert/article', async (req, response, next) => {
	const { title, content, userId, inputValue } = req.body
	try {
		const res = await Article.create({ id: uuid(), title, content, userId, inputValue })
		response.send(success(res))
	} catch (error) {
		response.send(fail(error))
	}
});
2、删除数据

删除使用destroy()

/* 删除文章 */
router.post('/delete/article', async (req, response, next) => {
	const { id } = req.body
	try {
		const data = await Article.destroy({ where: { id } }); //直接删除
		response.send(success(data))
	} catch (error) {
		response.send(fail(error))
	}
});

3、修改数据

修改使用update

router.post('/update/article', async (req, response, next) => {
	const { id, title, content, inputValue } = req.body
	try {
		const data = await Article.update({ title, content, inputValue }, { where: { id } });
		response.send(success(data))
	} catch (error) {
		response.send(fail(error))
	}
});
4、查找数据/分页模糊查询
/* 分页查询 */
/* 获取文章列表 */
router.post('/article/list', async (req, response, next) => {
	const { title, pageSize, pageNum } = req.body
	try {
		let data = await Article.findAndCountAll({
			where: {
				title: {
					[Op.like]: `%${title || ''}%`
				},
			},
			order: [['createTime', 'desc']],
			limit: pageSize || 10,
			offset: ((pageNum || 1) - 1) * (pageSize || 10),
		});
		response.send(success(data))
	} catch (error) {
		response.send(fail(error))
	}
});
5、查找所有findAll
/* 获取所有文章 */
router.post('/get/article/list/all', async (req, response, next) => {
	try {
		const data = await Article.findAll(); //获取所有
		response.send(success(data))
	} catch (error) {
		response.send(fail(error))
	}
});

6、查找某一条数据findone
/* 获取文章详情 */
router.post('/article/details', async (req, response, next) => {
	const { id } = req.body
	try {
		const data = await Article.findOne({
			where: { id }
		});
		response.send(success(data))
	} catch (error) {
		response.send(fail(error))
	}
});
7、关联查询后续补充。

六、更多用法

官网地址:https://www.sequelize.cn/文章来源地址https://www.toymoban.com/news/detail-808833.html

到了这里,关于Sequelize:Node.js 中的强大 ORM 框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Node.Js篇 NodeJs使用MongoDB

    目录 介绍 概念解析                   安装 启动时注意事项 NodeJs操作Mongo 介绍 MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。                                                           

    2024年02月09日
    浏览(53)
  • 【nodejs】用Node.js实现简单的壁纸网站爬虫

    在这个博客中,我们将学习如何使用Node.js编写一个简单的爬虫来从壁纸网站获取图片并将其下载到本地。我们将使用Axios和Cheerio库来处理HTTP请求和HTML解析。 首先,确保你已经安装了Node.js环境。然后,我们将创建一个新的文件夹,初始化项目并安装所需的依赖库: 编写爬虫

    2024年02月12日
    浏览(47)
  • ORM框架概述

      现在各大公司比较流行的ORM框架有MyBatis,Hibernate,Spring Data JPA等,甚至一些公司会进行封装后成为自己公司专用的框架。相信后端方向的各位小伙伴都知道, ORM框架就是连接数据库的桥梁 ,比较官方的说法叫“ 对象关系映射 ”。单单这六个字并不能很好地理解ORM框架。ORM 英

    2024年02月11日
    浏览(41)
  • 「NodeJs进阶」超全面的 Node.js 性能优化相关知识梳理

    相信对于前端同学而言,我们去开发一个自己的简单后端程序可以借助很多的nodeJs的框架去进行快速搭建,但是从前端面向后端之后,我们会在很多方面会稍显的有些陌生,比如「性能分析」,「性能测试」,「内存管理」,「内存查看」,「使用C++插件」,「子进程」,「

    2024年02月01日
    浏览(54)
  • Django、数据库----------ORM框架

    目录 1.安装第三方模块 2.ORM 1.自己创建数据库 2.django连接数据库 3.django操作表 创建表:在models.py文件中 删除表以及修改表 在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据 Django开发操作数据库更简单,内部提供了ORM框架。   ORM可以

    2024年02月09日
    浏览(55)
  • 一个简易的ORM框架的实现(二)

    把一个方向的技术研发做封装,具备通用性,让使用框架的开发者用起来很轻松。 属性: 通用性 健壮性 稳定性 扩展性 高性能 组件化 跨平台 建立项目 主键查询功能开发 绑定实体 一步一步的给大家推导: 一边写一边测试 首先,创建两个类库一个名为Models保存我们的模型

    2024年02月08日
    浏览(56)
  • Nodejs 入门8 NeDB 轻量级的Node.js 数据库

    常用的sqlite轻量级数据库,nodejs在windows环境下安装配置有时候会比较麻烦,很难顺利安装。 Nedb(Node Embedded Database)在一些情况下可以替代sqlite,特别适用于小型项目和快速原型开发。本文将介绍Nedb的基本概念、特性和使用方法,以帮助大家更好地了解和利用这个便捷的工

    2024年01月22日
    浏览(65)
  • 【Node.js从基础到高级运用】十三、NodeJS中间件高级应用

    在现代web开发中,Node.js因其高效和灵活性而备受青睐。其中,中间件的概念是构建高效Node.js应用的关键。在这篇博客文章中,我们将深入探讨Node.js中间件的高级应用,包括创建自定义中间件、使用第三方中间件等。我们将从基础讲起,逐步深入,旨在为读者提供全面而深入

    2024年03月22日
    浏览(100)
  • 通过nodejs修改node_modules中的源码

    在开发项目时,当node_modules中的默认配置不满足当前项目需求时,就需要对node_modules中相应的源码进行修改。但如果直接操作源码进行手动修改,代码不会同步到仓库中,当其他人拉取代码进行开发时,或者执行了npm install后源码依旧是默认配置。而此时则可以通过nodejs对源

    2024年02月05日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包