下面就为你详细讲解NestJs使用Mongoose对MongoDB操作的方法,并提供两条示例说明。
NestJs使用Mongoose对MongoDB操作的方法
环境搭建
在开始使用Mongoose对MongoDB进行操作之前,先完成NestJs和Mongoose的环境搭建。
安装NestJs
使用以下命令安装NestJs:
$ npm install -g @nestjs/cli
安装Mongoose
使用以下命令安装Mongoose:
$ npm install --save @nestjs/mongoose mongoose
在Module中导入MongooseModule:
@Module({
imports: [MongooseModule.forRoot('mongodb://localhost/nest')],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
以上代码中的“mongodb://localhost/nest”表示MongoDB的链接地址,其中“nest”为数据库名称。
操作MongoDB
定义Schema
在操作MongoDB之前,需要首先定义Schema。
import * as mongoose from 'mongoose';
export const CatSchema = new mongoose.Schema({
name: String,
age: Number,
breed: String,
});
以上示例定义了一个名为“CatSchema”的Schema,包含了“name”、“age”和“breed”三个字段。
定义Model
定义Model需要使用到上述定义好的Schema,以下为示例代码:
import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Cat } from './interfaces/cat.interface';
import { CreateCatDto } from './dto/create-cat.dto';
@Injectable()
export class CatsService {
constructor(@InjectModel('Cat') private readonly catModel: Model<Cat>) {}
async create(createCatDto: CreateCatDto): Promise<Cat> {
const createdCat = new this.catModel(createCatDto);
return createdCat.save();
}
async findAll(): Promise<Cat[]> {
return this.catModel.find().exec();
}
}
该示例代码定义了一个名为“CatsService”的Service,包含了“create”和“findAll”两个方法。其中“create”方法向数据库中插入一条记录,而“findAll”则返回所有记录。
调用Model
在Controller中调用上述定义好的Service。
import { Controller, Get, Post, Body } from '@nestjs/common';
import { CreateCatDto } from './dto/create-cat.dto';
import { CatsService } from './cats.service';
import { Cat } from './interfaces/cat.interface';
@Controller('cats')
export class CatsController {
constructor(private readonly catsService: CatsService) {}
@Post()
async create(@Body() createCatDto: CreateCatDto) {
this.catsService.create(createCatDto);
}
@Get()
async findAll(): Promise<Cat[]> {
return this.catsService.findAll();
}
}
以上示例代码中的“@Post()”和“@Get()”注解表示HTTP请求方式(POST和GET),在调用相应的方法时将自动映射到相应的HTTP请求。
示例说明
示例一:插入一条记录
以下为向MongoDB中插入一条记录的示例代码:
async function create(): Promise<any> {
const cat = new CatModel({
name: 'kitty',
age: 1,
breed: 'British Shorthair',
});
await cat.save();
}
create();
以上代码将向MongoDB中插入一条名为“kitty”的记录,包含“name”、“age”和“breed”三个字段。
示例二:查询所有记录
以下为查询MongoDB中所有记录的示例代码:
async function findAll(): Promise<any> {
const cats = await CatModel.find().exec();
console.log(cats);
}
findAll();
以上代码将查询MongoDB中所有记录,并将查询结果打印在控制台上。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:NestJs使用Mongoose对MongoDB操作的方法 - Python技术站