在现代的 WEB 开发中,服务器端开发并不再是高峰期。但是,服务器端开发仍然对于构建 Web 应用程序是至关重要的。Hapi 是一个现代的、可扩展的、开源的 Node.js 框架,它具有构建高可伸缩和稳定的 Web 应用程序的必要特性。而 Sequelize.js 则是一个支持多种数据库语言的 ORM(对象关系映射),它通过透明地将数据库操作封装到代码中,使开发者能够更专注于业务逻辑。
本文主要介绍如何使用 Hapi 和 Sequelize.js 进行 ORM,以及如何构建一个简单的 Web 应用程序。
安装 Hapi 和 Sequelize.js
安装 Hapi 和 Sequelize.js 可以通过 npm 来实现。以下是两个命令,你可以使用它们在你的系统上安装这两个 Node.js 模块。
npm install --save hapi npm install --save sequelize
连接数据库
首先,我们需要设置数据库连接。Sequelize.js 可以支持多种数据库语言,如 SQLite、MySQL 等。本文假设你正在使用 MySQL 数据库,因此你需要安装 mysql2
与 sequelize
(mysql2 是 sequelize 的依赖)。
在开始之前,需要先确定你有一个数据库,以及一个拥有读写权限的用户。在本示例中,我们创建了一个名为 my_db
的数据库,并使用一个名为 hapi
的用户来连接它。
接下来,在你的入口文件中,添加以下代码段:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ----------- - --------------------- ----- ------ - --- -------------- ----- --------- - --- -------------------- ------- --- - ----- ------------ -------- ------- --- -- -------- -- -- ------ ----------- ------------------------ -- - --------------------- - ------ ----------- ---展开代码
在这个例子中,我们创建了一个名为 Sequelizedb
的全局变量,并传递了数据库名称、用户名、密码(在我的情况下为空字符串)以及数据库的配置对象。
还可以通过 sync()
方法创建模型。它同步模型到数据库。
定义模型
在 Sequelize.js 中,每个表都被定义为一个模型。模型代表一个表,并包含定义表结构的字段。定义一个模型可以通过以下代码:
-- -------------------- ---- ------- ----- --------- - --- -------------------- ------- --- - ----- ------------ -------- ------- --- ----- ---- - ------------------------ - ----- - ----- ------------------- ---------- ----- -- ------ - ----- ------------------- ------- ----- ---------- ----- -- --------- - ----- ------------------- ---------- ----- - ---展开代码
这里定义了一个名为 User
的模型,它有三个字段:name、email 和 password。这些字段可以通过 Sequelize.js 支持的数据类型来定义。在本例中,我们使用 Sequelizedb.STRING
来定义文字字段。
此外,我们还可以添加选项属性,比如 allowNull
(是否可为空)、unique
(是否唯一)、defaultValue
等等。
创建 Api
我们已经设置了数据库连接,并通过定义模型来定义了我们的表结构。现在是时候使用 Hapi 来创建 API 了。首先,创建一个用户列表 API:
server.route({ method: 'GET', path: '/users', handler: async (request, h) => { const users = await User.findAll(); return users; } });
这里创建了一个 GET /users
的路由,handler 函数返回所有用户。
接下来,我们可以添加一个用于创建新用户的路由:
-- -------------------- ---- ------- -------------- ------- ------- ----- ---------------- -------- ----- --------- -- -- - ----- - ----- ------ -------- - - ---------------- ----- ---- - ----- ------------- ----- ------ -------- --- ------ ----- - ---展开代码
handler 函数从请求的 payload 中获取用户名、电子邮件和密码,然后创建一个新用户并返回新用户。
最后,我们可以添加一个用于获取指定用户信息的路由:
server.route({ method: 'GET', path: '/users/{id}', handler: async (request, h) => { const user = await User.findById(request.params.id); return user; } });
handler 函数将用户 ID 作为参数传递,然后从数据库中获取相应的用户。
运行应用程序
现在你已经创建了一个简单的 Hapi 应用程序,并使用 Sequelize.js 构建了一个基础 API,可以将其与数据库连接。使用以下命令来启动该应用程序:
node app.js
然后,访问应用程序运行的 URL(默认为 http://localhost:3000
),你应该能够看到 JSON 格式的响应。
至此,你已经学会了如何使用 Hapi 和 Sequelize.js 进行 ORM,以及如何构建一个简单的 Web 应用程序。在实际的开发中,你可以根据自己的需求对这种方式进行扩展、优化和改进。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67badae9306f20b3a69f5a64