在构建一个 Web 应用程序时,与数据库进行交互是不可避免的。在 Node.js 中,使用 ORM(对象关系映射)可以更方便地操作数据库。
在本篇文章中,我们将介绍如何在 Express.js 中使用 ORM 与数据库进行交互。我们将使用 Sequelize 作为我们的 ORM。
什么是 Sequelize?
Sequelize 是一个基于 Promise 的 Node.js ORM,支持 Postgres、MySQL、SQLite 和 Microsoft SQL Server。它提供了许多有用的功能,如数据验证、查询生成器和事务支持。
安装 Sequelize
在开始使用 Sequelize 前,我们需要先安装它。可以使用 npm 进行安装:
--- ------- ---------
同时,我们也需要安装对应的数据库驱动。例如,如果我们使用 MySQL,我们需要安装 mysql2 驱动:
--- ------- ------
连接数据库
在使用 Sequelize 之前,我们需要先连接到数据库。我们可以通过创建一个 Sequelize 实例来连接数据库。以下是一个连接到 MySQL 数据库的示例:
----- --------- - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ------- ---
在这个示例中,我们创建了一个 Sequelize 实例,并传入了数据库名称、用户名、密码、主机和数据库类型。
定义模型
在使用 Sequelize 时,我们需要先定义模型。模型是与数据库表相对应的 JavaScript 类。以下是一个定义模型的示例:
----- - ------ --------- - - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ------- --- ----- ---- ------- ----- -- ----------- ---------- ----------------- --------- ----------------- ------ ---------------- -- - ---------- ---------- ------ ---
在这个示例中,我们定义了一个 User 模型,并指定了它的数据类型。我们还指定了该模型对应的数据库表名为 user。
创建和查询数据
一旦我们定义了模型,我们就可以使用它来创建和查询数据了。以下是一个创建和查询数据的示例:
----- - ------ --------- - - --------------------- ----- --------- - --- --------------------- ----------- ----------- - ----- ------------ -------- ------- --- ----- ---- ------- ----- -- ----------- ---------- ----------------- --------- ----------------- ------ ---------------- -- - ---------- ---------- ------ --- ------ -- -- - ----- ----------------- -- ---- ----- ---- - ----- ------------- ---------- ------- --------- ------ ------ --------------------- --- -- ---- ----- ----- - ----- --------------- ------------------- -----
在这个示例中,我们首先调用了 sequelize.sync() 方法来同步模型和数据库。然后,我们使用 User.create() 方法创建了一个新的用户,并使用 User.findAll() 方法查询了所有的用户。
总结
在本篇文章中,我们介绍了如何在 Express.js 中使用 Sequelize ORM 与数据库进行交互。我们学习了如何连接数据库、定义模型以及创建和查询数据。希望这篇文章对你有所帮助。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65dea9141886fbafa4bea642