公告推出 MongoDB 8.0,有史以来最快的 MongoDB!阅读更多 >>推出 MongoDB 8.0,有史以来最快的 MongoDB!>>

Express & MongoDB

Express.js(或简称Express)是一个基于Node.js的Web应用程序服务器框架,MongoDB是一个通用文档数据库平台。您可以将它们结合起来构建一个存储在MongoDB中的Web应用程序。由于Express是运行在Node.js之上的模块,因此您可以使用MongoDB Node.js驱动程序连接到任何MongoDB数据库实例并进行查询。

什么是Express?

Express是Node.js的一个最小化Web应用程序框架。它被设计为快速、最小化且模块化。Express是一个免费和开源的MIT许可项目。它是OpenJS基金会的部分,并拥有一个活跃的贡献者社区。

Express扩展了Node.js的http包,增加了路由、中间件和视图等功能。Express通常用于创建API,尤其是REST API。以下示例使用Express实现了一个类似REST的API,仅用20行代码!

const express = require('express');
const app = express();
 
app.get('/products', (req, res) => {
 return res.send('GET HTTP method on product resource');
});
 
app.post('/products', (req, res) => {
 return res.send('POST HTTP method on product resource');
});
 
app.put('/products/:productId', (req, res) => {
 return res.send(`PUT HTTP method on product/${req.params.productId} resource`);
});
 
app.delete('/products/:productId', (req, res) => {
 return res.send(`DELETE HTTP method on product/${req.params.productId} resource`);
});
 
app.listen(3000, () => console.log('Server is running on port 3000'));

上面的代码使用了与HTTP方法相对应的app对象的方法——GET、POST、PUT和DELETE。例如,app.get()方法用于处理对/products路由的GET请求。同样,app.put()方法用于处理对/products/:productId路由的PUT请求,其中:productId是从URL中提取的参数。

您可以在简单的路由示例之上构建,以处理真实数据。一个常见的用例是创建一个存储在数据库中的REST API,例如MongoDB。API公开的不同资源作为端点,代表数据库中的集合。例如,/products端点代表存储在数据库中的产品集合。

有关如何使用Express和MongoDB构建REST API的完整教程,请参阅使用Express、Node和MongoDB构建REST API

MongoDB支持Express吗?

您可以通过安装MongoDB Node.js驱动程序在Express应用程序中使用MongoDB。MongoDB Node.js驱动程序是一个Node.js模块,它允许您将应用程序连接到MongoDB并处理您的数据。

如果您正在构建REST API,将路由逻辑从数据存储逻辑分离出来被认为是一种良好的实践。例如,您可能有一个处理/products资源请求的Product控制器,以及一个用于存储数据的Product模型。基于Express的许多流行的JavaScript框架都能为您做到这一点。让我们来看看其中的一些。

REST API architecture with Express and MongoDB

其他JavaScript框架

Express是一个经过超过10年发展的稳健解决方案。它是构建API,特别是REST API的一个很好的选择。然而,JavaScript生态系统始终在不断发展。在Express之后,许多JavaScript框架被创建出来,以提供更全面、更强大的功能集。其中一些框架,如NestJS,集成了Express,以提供类似的路由和中间件能力。其他框架,如KoaFastify,被认为是受Express启发的,提供了比后者更高效、更适合开发者的解决方案。让我们更详细地了解一下这些框架。

Koa

Koa是一个轻量级的Node.js框架,由Express的原始团队创建。Koa与Express之间的主要区别在于它们实现中间件的方式。Koa没有内置的中间件机制,而是依赖于promises和async函数来控制程序流程。这使您不再依赖回调,从而帮助您摆脱所谓的“回调地狱”。

另一个区别是Koa本身不提供开箱即用的路由。相反,您可以使用如koa-routerkoa-route这样的第三方Node模块来实现路由。

Fastify

Fastify是一个针对Node的通用服务器框架,以其高度优化的HTTP API而著称。该框架旨在尽可能快,与其他Node框架的基准测试证实了这一点。

此外,Fastify提供可扩展的插件架构和不断增长的插件生态系统。该架构旨在确保插件独立性和封装。这消除了由交叉依赖引起的大量问题,并允许您在不担心破坏应用程序其他部分的情况下重构代码。

NestJS

NestJS(有时被称为Nest)是一个框架,它为Express和Fastify等框架提供了额外的抽象层次。它带有一个开箱即用的应用程序架构,可以帮助您快速迭代和扩展。NestJS的架构受到了Angular的极大启发。与Angular类似,NestJS完全使用TypeScript构建,NestJS应用程序也是用TypeScript编写的。

NestJS使用Express提供HTTP能力。然而,很容易将Express替换为其他框架,如Fastify,利用后者的更好性能。

如上所述,NestJS带有一套内置的架构解决方案,包括数据库通信的解决方案。NestJS提供了与Sequelize和TypeORM的集成,可以用来连接SQL或非关系型数据库,如MongoDB。NestJS团队还支持Mongoose集成。然而,NestJS足够灵活,您也可以通过加载其原生的Node.js驱动程序来连接到数据库。

Express的好处是什么?

采用

Express 是最广泛使用的 Node.js 框架。它拥有强大的贡献者社区,并被各种实际项目广泛使用。它也是构建 API 的绝佳选择,这一点在长期的使用中得到了证明。

简单性

Express 是一个无观点的框架,易于学习和使用。你可以按需扩展它,并且可以与任何其他 Node.js 模块或库一起使用。

社区支持

Express 是最广泛使用的 JavaScript 框架之一。它拥有庞大的社区,这意味着当你用 Express 构建时,很容易找到问题的答案。

Express 在 MEAN 和 MERN 堆栈中

MEAN (MongoDB, Express, Angular, 和 Node.js) 和 MERN (MongoDB, Express, React, 和 Node.js) 是构建端到端 Web 应用程序流行的 JavaScript 技术堆栈。Express 是构成 MEAN 和 MERN 堆栈的四个基本技术之一。其他三个是

  • MongoDB 作为数据库。
  • Angular 或 React 作为客户端应用程序。
  • Node.js 作为服务器运行时环境。

在构建 MEAN/MERN 应用程序时,Express 用于构建 REST API。该 API 用于客户端应用程序和服务器端应用程序之间的通信。

如果您想了解更多关于 MEAN 和 MERN 堆栈的信息,您可以阅读专门的 MEANMERN 文章。

下一步

Express 是构建 REST API 的绝佳选择。因为 Express 运行在 Node.js 上,所以您可以使用 MongoDB Node.js 驱动程序轻松连接到 MongoDB 实例。如果您想了解更多,请遵循此完整教程 使用 Express, Node 和 MongoDB 构建 REST API

常见问题解答

如何使用 MongoDB 与 Express 配合使用?

您可以使用 MongoDB Node.js 驱动程序连接到任何 MongoDB 数据库实例。由于 Express 在 Node.js 上运行,因此您也可以将驱动程序与 Express 一起使用。

Express 中使用的是哪种数据库驱动程序?

Express 没有内置数据库的概念。您可以使用任何与 Node.js 兼容的数据库驱动程序。例如,您可以使用 MongoDB Node.js 驱动程序连接到 MongoDB。

Node 和 Express 之间的区别是什么?

Node.js(或 Node)是一个 JavaScript 运行环境。Express 是一个基于 Node.js 构建的 JavaScript 框架,它为构建 API 和 Web 应用程序提供了额外的功能。

我如何使用 Node、Express 和 MongoDB 创建 REST API?

您可以使用 Express 路由机制注册与 HTTP 方法(GET、POST、PUT 和 DELETE)对应的路由。通过这些路由,您可以在 MongoDB 数据库中的集合上执行 CRUD(创建、读取、更新和删除)操作。有关完整教程,请参阅使用 Express、Node 和 MongoDB 构建 REST API
© . All rights reserved.