大家好!今天我们将介绍如何使用最新版本的NestJS 10和强大的MongoDB数据库(通过Mongoose)来创建一个完整的CRUD API。如果您对Node.js和后端开发有着浓厚的兴趣,那么本文将为您带来无限的喜悦!

在当今数字化时代,API是构建现代应用程序的关键组成部分。NestJS是一个基于Node.js的框架,可以帮助我们高效地开发可扩展和模块化的后端应用程序。而MongoDB作为一种流行的非关系型数据库,提供了快速、灵活且可扩展的存储解决方案。

首先,让我们对NestJS做一些简单而迷人的介绍。NestJS借鉴了Angular的许多概念,提供了一种优雅且可维护的方式来构建服务器端应用程序。它使用TypeScript作为主要开发语言,并提供了一种基于依赖注入和装饰器的开发风格。

好了,现在让我们开始构建我们的CRUD API。首先,我们需要安装NestJS CLI,这是一种命令行工具,可以帮助我们快速启动和生成NestJS项目。使用以下命令进行安装:

“`

npm install -g @nestjs/cli

“`

一旦安装完成,我们就可以使用以下命令创建一个新的NestJS项目:

“`

nest new nest-mongodb-crud-api

“`

创建项目之后,我们需要安装一些必要的依赖库。我们将使用Mongoose作为MongoDB的对象建模工具。运行以下命令以安装所需的依赖项:

“`

cd nest-mongodb-crud-api

npm install mongoose @nestjs/mongoose

“`

一旦安装完成,我们需要为Mongoose配置连接字符串。打开src/app.module.ts,并添加以下代码:

“`typescript

import { Module } from ‘@nestjs/common’;

import { MongooseModule } from ‘@nestjs/mongoose’;

@Module({

imports: [

MongooseModule.forRoot(‘mongodb://localhost/nest-mongodb-crud-api’),

],

})

export class AppModule {}

“`

现在,我们已经连接到数据库,接下来让我们开始创建我们的第一个模型。

在src目录下创建一个新文件夹`src/models`,然后在文件夹中创建一个`user.model.ts`文件。添加以下代码:

“`typescript

import { Schema, Document } from ‘mongoose’;

export interface User extends Document {

name: string;

age: number;

}

export const UserSchema = new Schema({

name: String,

age: Number,

});

“`

我们的用户模型很简单,只有一个名称和年龄字段。现在我们需要为模型创建一个服务,并实现一些基本的CRUD操作。

在`src`文件夹中创建一个名为`users`的新文件夹,并在该文件夹中创建一个`users.service.ts`文件。添加以下代码:

“`typescript

import { Injectable } from ‘@nestjs/common’;

import { InjectModel } from ‘@nestjs/mongoose’;

import { Model } from ‘mongoose’;

import { User } from ‘../models/user.model’;

@Injectable()

export class UsersService {

constructor(

@InjectModel(‘User’) private readonly userModel: Model,

) {}

async findAll(): Promise {

return this.userModel.find().exec();

}

async findById(id: string): Promise {

return this.userModel.findById(id).exec();

}

async create(user: User): Promise {

const newUser = new this.userModel(user);

return newUser.save();

}

async update(id: string, user: User): Promise {

return this.userModel.findByIdAndUpdate(id, user, { new: true }).exec();

}

async delete(id: string): Promise {

return this.userModel.findByIdAndRemove(id).exec();

}

}

“`

现在,我们只需要创建一个具体的控制器来处理来自客户端的请求,并调用相应的服务方法。

在`src/users`文件夹中创建一个`users.controller.ts`文件,并添加以下代码:

“`typescript

import { Controller, Get, Post, Put, Delete, Param, Body } from ‘@nestjs/common’;

import { UsersService } from ‘../services/users.service’;

import { User } from ‘../models/user.model’;

@Controller(‘users’)

export class UsersController {

constructor(private readonly usersService: UsersService) {}

@Get()

async findAll(): Promise {

return this.usersService.findAll();

}

@Get(‘:id’)

async findById(@Param(‘id’) id: string): Promise {

return this.usersService.findById(id);

}

@Post()

async create(@Body() user: User): Promise {

return this.usersService.create(user);

}

@Put(‘:id’)

async update(@Param(‘id’) id: string, @Body() user: User): Promise {

return this.usersService.update(id, user);

}

@Delete(‘:id’)

async delete(@Param(‘id’) id: string): Promise {

return this.usersService.delete(id);

}

}

“`

现在,我们已经创建了我们的控制器和服务,让我们将它们导出并将其添加到根模块中。

在`src/app.module.ts`中,添加以下代码:

“`typescript

import { Module } from ‘@nestjs/common’;

import { MongooseModule } from ‘@nestjs/mongoose’;

import { UsersModule } from ‘./users/users.module’;

@Module({

imports: [

MongooseModule.forRoot(‘mongodb://localhost/nest-mongodb-crud-api’),

UsersModule,

],

})

export class AppModule {}

“`

最后,我们需要在根模块中添加一个`users.module.ts`文件:

“`typescript

import { Module } from ‘@nestjs/common’;

import { MongooseModule } from ‘@nestjs/mongoose’;

import { UsersService } from ‘./services/users.service’;

import { UsersController } from ‘./controllers/users.controller’;

import { UserSchema } from ‘./models/user.model’;

@Module({

imports: [

MongooseModule.forFeature([{ name: ‘User’, schema: UserSchema }]),

],

providers: [UsersService],

controllers: [UsersController],

})

export class UsersModule {}

“`

现在,我们已经完成了CRUD API的构建过程!您可以尝试使用Postman或Curl来测试API的各个端点。

在本文中,我们了解了如何使用NestJS 10和MongoDB(通过Mongoose)从头开始构建一个完整的CRUD API。通过遵循这些步骤,您将能够创建强大、可扩展和模块化的后端应用程序。祝您在使用NestJS构建API时玩得开心!

参考链接:https://jsdev.space/nestjs-crud/

感谢阅读本文,希望对您有所帮助!

详情参考

了解更多有趣的事情:https://blog.ds3783.com/