在开发 Web 应用程序时,数据库是不可或缺的一部分。虽然在市面上有很多种不同的数据库可供选择,但 PostgreSQL 是一种经过广泛应用和验证的关系数据库,因此在很多场景下都是一个不错的选择。而 Sequelize 是一种支持多种数据库的 ORM 框架,它可以轻易地与 PostgreSQL 集成在一起。本文将向您展示如何使用 Sequelize 和 PostgreSQL 来构建性能优秀、可维护和可扩展的 Web 应用程序。
Sequelize 是什么?
Sequelize 是一种 Node.js 的 ORM(Object-Relational Mapping,对象关系映射)框架,它可以让我们以 JavaScript 代码的形式操作数据库,而不是直接使用 SQL 语句。Sequelize 支持多种数据库,包括 PostgreSQL、MySQL、SQLite 和 MariaDB 等,并且拥有许多有用的功能,例如:
- 支持事务和断线重连
- 支持连接池
- 支持复杂的查询(联表查询、子查询、聚合函数等)
- 处理模型之间的关联关系(一对一、一对多、多对多)
- 支持事务和断线重连
如何使用 Sequelize 和 PostgreSQL?
在开始使用 Sequelize 和 PostgreSQL 之前,你需要先安装必要的软件:
- Node.js(你可以从 https://nodejs.org 下载安装包)
- PostgreSQL 数据库(你可以从 https://www.postgresql.org/download/ 下载安装包)
- Sequelize(你可以在项目根目录下执行
npm install sequelize pg
命令来安装)
创建数据库和数据表
首先,需要创建一个数据库和一张数据表,我们可以使用 PostgreSQL 中的 psql 命令行工具来完成。在终端中执行以下命令,以创建一个名为 mydb 的数据库和一张名为 users 的数据表。
// javascriptcn.com 代码示例 $ sudo -u postgres createdb mydb $ psql -U postgres -d mydb mydb=# CREATE TABLE users ( mydb(# id SERIAL PRIMARY KEY, mydb(# name VARCHAR(100), mydb(# email VARCHAR(100) UNIQUE, mydb(# age INTEGER, mydb(# created_at TIMESTAMP DEFAULT now(), mydb(# updated_at TIMESTAMP DEFAULT now() mydb(# );
上述命令将会创建一个 users 表,该表包含了 id、name、email、age、created_at 和 updated_at 共计六个字段,其中 id 字段为主键,使用 SERIAL 类型,id 的值会在插入时自动递增;email 字段为唯一键,即不允许存在重复的值。
连接到数据库
在使用 Sequelize 之前,您需要配置连接到 PostgreSQL 数据库的信息。在项目根目录下创建一个名为 config.json 的文件,该文件包含连接数据库所需的信息,例如:
// javascriptcn.com 代码示例 { "development": { "username": "postgres", "password": "postgres", "database": "mydb", "host": "127.0.0.1", "port": 5432, "dialect": "postgres" } }
上述配置文件指定了开发环境下的连接信息,我们使用的用户名是 postgres,密码也是 postgres,数据库名为 mydb,连接的主机为 127.0.0.1,端口为 5432,使用的数据库类型为 PostgreSQL。
一旦有了配置文件,我们就可以使用 Sequelize 来连接到数据库了。根据上面的配置信息,我们可以编写如下代码:
// javascriptcn.com 代码示例 // index.js const Sequelize = require('sequelize'); const config = require('./config.json')[process.env.NODE_ENV || 'development']; const sequelize = new Sequelize(config.database, config.username, config.password, { host: config.host, port: config.port, dialect: config.dialect, }); sequelize.authenticate() .then(() => { console.log('Connection has been established successfully.'); }) .catch(err => { console.error('Unable to connect to the database:', err); });
上述代码中,我们首先加载 Sequelize 模块。然后从 config.json 文件中读取与当前环境匹配的配置信息,并使用 Sequelize 构造函数创建一个 Sequelize 实例。接着,我们调用 authenticate()
方法以测试连接是否正常,如果成功,则输出 Connection has been established successfully. 的信息,否则输出错误信息。
使用模型定义数据表
使用 Sequelize 查询数据库时,需要先定义一个模型,以便能够在 JavaScript 中对数据库进行操作。模型定义了数据表的结构,字段名、类型、默认值等信息。
// javascriptcn.com 代码示例 // User.js const sequelize = require('./connection'); const Sequelize = require('sequelize'); const User = sequelize.define('user', { name: { type: Sequelize.STRING, allowNull: false, }, email: { type: Sequelize.STRING, allowNull: false, unique: true, }, age: { type: Sequelize.INTEGER, allowNull: false, }, createdAt: { type: Sequelize.DATEONLY, allowNull: false, defaultValue: Sequelize.NOW, }, updatedAt: { type: Sequelize.DATEONLY, allowNull: false, defaultValue: Sequelize.NOW, }, }); module.exports = User;
上述代码中,我们首先从 connection.js 文件中引入了已经创建的 Sequelize 实例。然后,我们使用 Sequelize.define() 方法来定义一个名为 user 的模型。在这个模型中,我们定义了五个字段:name、email、age、createdAt 和 updatedAt,在这里,name、email 和 age 的类型都是字符串,且不允许为空,email 字段还必须唯一。
创建数据记录
创建数据记录的过程也很简单。只需调用 Sequelize 中的 create()
方法,即可将数据插入到数据库中。
// javascriptcn.com 代码示例 const User = require('./models/User'); const newUser = { name: 'Tom Smith', email: 'tom.smith@example.com', age: 30, }; User.create(newUser).then(() => { console.log('Created user:', newUser); }).catch((err) => { console.log(`Error: ${err}`); });
上述代码中,我们创建了一个名为 newUser 的用户对象,并将其传递给 User.create()
方法进行插入。在上述代码中,我们使用了 Promise 语法来处理 create()
方法的结果。如果插入成功,则打印 Created user: { name: 'Tom Smith', email: 'tom.smith@example.com', age: 30 } 的信息,否则打印错误。
查询数据记录
使用 Sequelize 查询数据记录非常简单,只需要调用模型上的 findAll()
或 findOne()
方法即可。
const User = require('./models/User'); User.findAll().then((users) => { console.log('All users:', JSON.stringify(users, null, 2)); }).catch((err) => { console.log(`Error: ${err}`); });
上述代码中我们调用模型上的 findAll()
方法来查找所有的用户记录,并将查询结果打印出来。如果查询出错,则打印错误信息。
更新数据记录
与插入和查询类似,使用 Sequelize 更新数据记录也很简单。只需要调用模型上的 update()
方法,即可更新指定的数据记录。
// javascriptcn.com 代码示例 const User = require('./models/User'); User.update({ name: 'Jerry Brown' }, { where: { id: 1, } }).then(() => { console.log('Updated user id 1'); }).catch((err) => { console.log(`Error: ${err}`); });
上述代码中,我们将 id 为 1 的用户记录的 name 字段更新为 Jerry Brown。其中,{ name: 'Jerry Brown' } 表示要更新的数据,{ where: { id: 1 } } 表示要查询的条件。
删除数据记录
删除数据记录的过程也是类似的。只需要调用模型上的 destroy()
方法,即可删除指定的数据记录。
// javascriptcn.com 代码示例 const User = require('./models/User'); User.destroy({ where: { id: 1, } }).then(() => { console.log('Deleted user id 1'); }).catch((err) => { console.log(`Error: ${err}`); });
上述代码中,我们删除了 id 为 1 的用户记录。其中,{ where: { id: 1 } } 表示要查询的条件。
总结
本文向您展示了如何使用 Sequelize 和 PostgreSQL 来构建性能优秀、可维护和可扩展的 Web 应用程序。我们介绍了如何使用 Sequelize 库来连接数据库、定义模型、插入数据、查询数据、更新数据、以及删除数据。希望本文对您有所帮助,感谢您的阅读。
以上代码仅供参考,具体代码应根据您自己系统的需求进行修改。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/654efbe57d4982a6eb80876f