Nestjs是一个强大的Node.js框架,使开发人员能够构建高效,可扩展和可维护的服务器端应用程序。在使用数据库时,由于其灵活性和可扩展性,MongoDB是一个流行的选择。为了与Nestjs应用程序中的MongoDB进行交互,最常用的库之一是Mongoose,它为定义模式,创建模型和执行数据库操作提供了一种优雅而直接的方式。在本文中,我们将探讨如何在Nestjs应用程序中与Mongoose建立MongoDB连接,并使用实际示例创建用户。
先决条件
在我们深入代码之前,请确保已安装以下先决条件:
-
node.js和npm:确保您在计算机上安装了node.js(与npm一起使用NPM)。
-
Nestjs Cli:使用以下命令在全球安装Nestjs CLI:
npm install -g @nestjs/cli
- mongoDB:确保您在本地运行mongoDB实例或可以访问远程mongodb服务器。
设置Nestjs应用程序
让我们从创建新的Nestjs应用程序开始。打开终端并运行以下命令:
nest new nest-mongoose-example
cd nest-mongoose-example
这将生成一个新的Nestjs项目,名称为Nest-Mongoose-example。
安装依赖项
在您的项目目录中,使用以下命令安装必要的依赖项:
npm install mongoose @nestjs/mongoose
- mongoose: node.js。 的mongodb库
- @nestjs/mongoose:官方Nestjs集成猫鼬的官方包。
建立mongoDB连接
为了在Nestjs应用程序中使用Mongoose连接到MongoDB,您需要设置一个模块来管理连接。让我们在src文件夹内创建一个database.module.ts文件,其中包含以下内容:
// database.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
@Module({
imports: [
MongooseModule.forRoot('mongodb://localhost/nest-mongoose-example'),
],
})
export class DatabaseModule {}
在此模块中,我们使用mongoosemodule.forroot()方法来建立与mongoDB实例的连接。根据您的MongoDB配置调整连接URL(mongodb:// localhost/nest-mongoose-example)。
创建用户模式和模型
接下来,让我们使用Mongoose创建用户模式和模型。使用以下代码创建一个名为user.schema.ts的新文件:
// user.schema.ts
import * as mongoose from 'mongoose';
export const UserSchema = new mongoose.Schema({
firstName: String,
lastName: String,
email: String,
});
export interface User extends mongoose.Document {
firstName: string;
lastName: string;
email: string;
}
此模式定义了MongoDB中用户文档的结构。
创建用户服务
现在,我们已经制定了架构和模型,让我们创建一个服务以与数据库进行交互。在SRC文件夹中创建一个user.service.ts文件,其中包含以下内容:
// user.service.ts
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { User } from './user.schema';
@Injectable()
export class UserService {
constructor(@InjectModel('User') private readonly userModel: Model<User>) {}
async createUser(firstName: string, lastName: string, email: string): Promise<User> {
const newUser = new this.userModel({ firstName, lastName, email });
return newUser.save();
}
}
用户服务类使用 @nestjs/mongoose的InjectModel Decorator将用户模型注入服务。 CreateUser方法将用户信息作为输入,并在数据库中创建新用户。
创建用户控制器
要将用户创建功能公开为API端点,让我们创建一个控制器。使用以下代码在SRC文件夹中创建user.controller.ts文件:
// user.controller.ts
import { Controller, Post, Body } from '@nestjs/common';
import { UserService } from './user.service';
@Controller('users')
export class UserController {
constructor(private readonly userService: UserService) {}
@Post()
async createUser(@Body() body: any) {
const { firstName, lastName, email } = body;
return this.userService.createUser(firstName, lastName, email);
}
}
在此控制器中,我们在 /用户路由上定义了一个端口。当请求主体中使用用户数据向此路线提出后请求时,请调用UserService的CreateUser方法来创建新用户。
将所有内容连接在一起
最后,让我们在app.module.ts文件中汇总模块和组件:
// app.module.ts
import { Module } from '@nestjs/common';
import { MongooseModule } from '@nestjs/mongoose';
import { DatabaseModule } from './database.module';
import { UserController } from './user.controller';
import { UserService } from './user.service';
import { UserSchema } from './user.schema';
@Module({
imports: [DatabaseModule, MongooseModule.forFeature([{ name: 'User', schema: UserSchema }])],
controllers: [UserController],
providers: [UserService],
})
export class AppModule {}
在此文件中,我们导入必要的模块,控制器,服务和模式。我们使用mongoosemodule.forfeature()方法将用户模型导入模块。
测试用户创建
要测试用户创建功能,请使用以下命令启动Nestjs应用程序:
npm run start:dev
假设您的服务器在端口3000上本地运行,则可以使用Curl,Postman或您的首选API客户端等工具向http://localhost:3000/users提供以下JSON主体的邮政请求:
{
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com"
}
您应该收到包含新创建的用户文档的响应。
结论
在本文中,我们介绍了在Nestjs应用程序中使用Mongoose建立MongoDB连接的过程。我们创建了一个用户模式,模型,服务和控制器,以使用REST API端点执行用户创建操作。 Nestjs,Mongoose和MongoDB为构建高效且可扩展的服务器端应用程序提供了强大的堆栈,使其成为开发人员的流行选择。