网站首页 > 教程文章 正文
Node.js 是一个开源与跨平台的 JavaScript 运行时环境。其在浏览器外运行 V8 JavaScript 引擎,这使得 Node.js 的性能表现非常出色,也使得 Node.js 在服务端开发领域占据一席之地。
对于数据库的操作,最简单直接的方法是编写并执行原生 SQL。然而,也有不少开发者使用数据库 ORM(对象关系映射),对数据库操作进行更高层次的抽象,以获得可读性更高、更易维护的数据操作逻辑代码。
Sequelize.js,就是在 Node.js 服务端开发中,一个功能强大的数据库 ORM 库。
简介
Sequelize.js,是 sequelize 组织在 Github 上开源的 Node.js 数据库 ORM 库,目前版本为 v6.5.0。
Sequelize 完全使用 Javascript 开发,使用基于 Promise 的异步机制。其支持多种数据库,包括 Postgres, MySQL, MaraiaDB, SQLitet 和 MSSQL。Sequelize 提供了事务支持,懒加载和尽早加载等数据库功能支持,功能强大。
目前,Sequelize.js 已被广泛使用在 Node.js 服务端项目中,支撑着许许多多服务的数据库连接、查询和操作,使用便捷,开发效率高,功能丰富,值得尝试。
使用
要在 Node.js 项目中使用 Sequelize,首先进行依赖安装,使用 NPM 或 YARN 安装:
npm install --save sequelize另外,针对不同的数据库,还需要安装对应的数据库驱动库:
$ npm install --save pg pg-hstore # Postgres
$ npm install --save mysql2
$ npm install --save mariadb
$ npm install --save sqlite3
$ npm install --save tedious # Microsoft SQL Server安装完成,并部署好相关的数据库后,就可以在 Node.js 项目中使用了。
首先是连接数据库。Sequelize 可以直接解析数据库连接 URI 来创建连接:
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:') // Example for sqlite
const sequelize = new Sequelize('postgres://user:pass@example.com:5432/dbname') // Example for postgres也可以提供参数对象来配置连接:
const { Sequelize } = require('sequelize');
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql'
});完成数据库连接后,对于 ORM 而言,其需要把数据库里 SQL 定义的数据模型,映射到 Node.js 里的数据模型来,所以,我们需要进行数据模型的定义。我们来看一个简单的例子:
const { Sequelize, DataTypes } = require('sequelize');
const sequelize = new Sequelize('sqlite::memory:');
const User = sequelize.define('User', {
firstName: {
type: DataTypes.STRING,
allowNull: false
},
lastName: {
type: DataTypes.STRING
}
}, {
// Other model options go here
});
console.log(User === sequelize.models.User); // true在这个例子中,我们定义了一个表示用户的数据模型,包括了每个数据域的类型和相关参数。
完成定义后,我们可以来进行简单的数据库操作了。首先,我们插入一条数据,直接使用数据模型 User 的 create 方法来进行:
const jane = await User.create({ firstName: "Jane", lastName: "Doe" });
console.log("Jane's auto-generated ID:", jane.id);然后,再进行查询,使用 findAll,查询返回该数据表的所有数据:
const users = await User.findAll();
console.log(users.every(user => user instanceof User)); // true
console.log("All users:", JSON.stringify(users, null, 2));此时,我们可以看到,在命令行输出了我们之前插入的数据。对于 findAll,我们还可以添加 where 查询选项,对应 SQL 里面的 WHERE 字句:
Post.findAll({
where: {
authorId: 12
status: 'active'
}
});总结
Sequelize.js 实现了 Node.js 的数据库 ORM,把 SQL 数据库里的数据表,映射为 Node.js 中的数据模型,并实现了众多的数据操作查询,使用抽象层级更高的 JS 方法,实现数据操作。
Sequelize.js 使用便捷,功能强大,基本覆盖了 SQL 数据库的日常使用操作,并提供了一个高级功能的实现。对于使用 Node.js 进行服务端开发的开发者而言,Sequelize.js 无疑是进行数据库操作的首选之一。
猜你喜欢
- 2025-09-23 5分钟快速掌握在Python使用SQLite数据库,
- 2025-09-23 ExcelVBA 连接 MySQL 数据库_vba怎么连接数据库sql
- 2025-09-23 Python+SQLite 终极实战指南:零基础到高效开发
- 2025-09-23 搭建electron+vite框架的三种方法
- 2025-09-23 免装环境!SQLite 可视化神器,Java 开发者速通指南
- 2025-09-23 没想到一个Trae的提示词工具,居然会有这么多人喜欢?
- 2025-09-23 SQLite线程模式讲解_简述sqlite3的功能
- 2025-09-23 ExcelVBA:创建SQLite数据库,以及CRUD基本操作函数(1/2)
- 2025-09-23 Qt编程进阶(21):Qt操作SQLite数据库及实例
- 2025-09-23 Python (Sqlite)用事务写多表数据的简单例子
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)
