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 无疑是进行数据库操作的首选之一。
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/procedure/21915.html