Fastify 是一个快速、低开销且丰富的 Node.js Web 框架。它将快速响应、低开销和强大的功能组合在一起,使其成为许多开发者的首选框架。而 MongoDB 是一款面向文档的 NoSQL 数据库,被广泛用于 Web 应用程序的开发中。在本篇文章中,我们将探讨如何在 Fastify 框架中使用 MongoDB 的最佳实践。
安装 Fastify 和 MongoDB
要开始在 Fastify 中使用 MongoDB,您需要先全局安装 Fastify 和 MongoDB:
npm install -g fastify mongodb
连接 MongoDB 数据库
在 Fastify 中使用 MongoDB 首先需要连接到数据库。您需要使用 MongoDB 的 Node.js 驱动程序 中的 MongoClient
。
首先,在 Fastify 应用程序的根目录中创建一个名为 db.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- - ----------- - - ------------------ -- ------- ----- ----- --- - ---------------------------------------------- ----- ------ - --- ---------------- - ------------------- ---- -- ----- -------- ----------- - --- - -- --- ------- ----- ---------------- ---------------------- -- --------- - ----- ----- - ---------------- - - ----- -------- --------- - --- - -- -- ------- -- ----- -------------- ------------------------- ---- --------- - ----- ----- - ---------------- - - -------------- - - ------- ---------- ------- -
以上代码将连接字符串定义为 URI 变量,并使用 MongoClient
创建一个新客户端。然后定义了两个异步函数:connectDB
和 closeDB
,用于连接和关闭数据库连接。
在你的 Fastify 应用程序中,你需要在启动时调用 connectDB
,并在关闭时调用 closeDB
。为此,您可以使用 fastify.register
函数,并传入一个函数:
-- -------------------- ---- ------- ----- ------- - -------------------- ----- - ---------- ------- - - --------------- ---------------------- ----------------- -------- - ----- ----------- -------------------------- ----- -- -- - ----- --------- -- -- ------ --
以上代码通过 fastify.register
注册了一个异步函数。该函数在 Fastify 应用程序启动时立即被调用,并使用 connectDB
连接到数据库。在添加关闭钩子函数上,使得当应用程序关闭时,可在 closeDB
中关闭数据库连接。
创建 MongoDB 集合和模型
在 Fastify 应用程序中使用 MongoDB 的另一个常见做法是通过创建模型对象,使用它来查询和更新数据库。要创建一个 MongoDB 模型,您需要定义一个 MongoDB 集合,并使用 Mongoose 库 进行 CRUD 操作。
在 Fastify 应用程序的根目录中创建一个名为 model.js
的文件,并在其中编写以下代码:
-- -------------------- ---- ------- ----- - ------ - - --------------- ----- -------- - ------------------- ----- ------ - --------------- -- ---- ------- -- ----- ---------- - --- -------- ----- ------- ------ ------- ---- ------ -- -- - ------- ------- ----- ---- - -------------------- ----------- -------------- - ----
以上代码使用 mongoose
库将 userSchema
转换为模型,并将其导出。
使用 MongoDB 模型进行 CRUD 操作
有了模型对象之后,接下来可以使用它来进行 CRUD 操作了。例如,要获取所有用户的列表,可以编写以下代码:
const fastify = require('fastify')() const User = require('./model') fastify.get('/users', async (request, reply) => { const users = await User.find() return users })
以上代码使用 User.find()
方法从 MongoDB 中获取所有的用户,并将其返回给前端。
要创建新用户,可以使用 User.create()
方法:
fastify.post('/users', async (request, reply) => { const user = await User.create(request.body) return user })
以上代码接受一个 POST 请求,使用 User.create()
方法将请求体中的数据创建为一个新用户。
要获取单个用户,请使用 User.findById()
方法:
fastify.get('/users/:id', async (request, reply) => { const user = await User.findById(request.params.id) return user })
以上代码接受一个 GET 请求,并使用 User.findById()
方法获取 ID 为 request.params.id
的用户。
要更新用户,请使用 User.findByIdAndUpdate()
方法:
-- -------------------- ---- ------- ------------------------- ----- --------- ------ -- - ----- ---- - ----- ----------------------- ------------------ ------------- - ---- ---- - - ------ ---- --
以上代码接受一个 PUT 请求,使用 User.findByIdAndUpdate()
方法更新 ID 为 request.params.id
的用户,并传入请求体参数。
要删除用户,请使用 User.findByIdAndDelete()
方法:
fastify.delete('/users/:id', async (request, reply) => { const user = await User.findByIdAndDelete(request.params.id) return user })
以上代码接受一个 DELETE 请求,并使用 User.findByIdAndDelete()
方法来删除 ID 为 request.params.id
的用户。
结论
在 Fastify 应用程序中使用 MongoDB,将能在您的应用程序中提供强大的数据存储和操作功能。当您将本文中的最佳实践应用于您的应用程序中时,您将能够编写出性能出色并且可维护扩展的 Node.js Web 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/672ad7c2ddd3a70eb6d0f101