按类别获取所有记录NestJs+MongoDB+Mongoose



我使用的是NestJs+MongoDB+Mongoose,我想用参数发送的记录获取MongoDB中的所有记录,但我没有得到,我是初学者。如何获取同一类别的所有记录?我在请求中发送了类别ID,但我没有收到该类别的所有记录,你能帮我吗?

我需要这个:

获取/用户/食物并返回此:

{"密码":"123","name":"Brian","地址":","电子邮件":"a@a","类别":"食品","cpfOrCnpj":"字符串"},

{"密码":"123","name":"Margo","地址":","电子邮件":"a@a","类别":"食品","cpfOrCnpj":"字符串"}

我的代码:

我的服务:

import { Injectable } from '@nestjs/common';
import { InjectModel } from '@nestjs/mongoose';
import { User } from './user.model';
import { Model } from 'mongoose';
@Injectable()
export class UserService {
constructor(@InjectModel('User') private readonly userModel: Model<User>) {}
async create(doc: User) {
//Ok
const result = await new this.userModel(doc).save();
return result.id;
}
async find(id: string) {
return await this.userModel.findById(id).exec();
}

async update(user: User) {
//Test
return await this.userModel.findByIdAndUpdate(user);
}
}

我的控制器:

import { Body, Controller, Get, Param, Post, Put } from '@nestjs/common';
import { UserService } from './user.service';
import { User } from './user.model';
@Controller('user')
export class UserController {
constructor(private service: UserService) {}
@Get(':id')
async find(@Param('category') id: string) {
return this.service.find(id);
}
@Post('create')
create(@Body() user: User) {
return this.service.create(user);
}
@Put('update')
update(@Body() user: User) {
return this.service.update(user);
}
}

在此函数中

find(id: string) {
return this.userModel.findById(id).exec();
}

您正在按_id进行搜索,findById方法用于按文档的_id进行筛选

我认为category不是你这里文件的_id

因此,您需要使用普通的find方法,并将一个对象传递给它

find(id: string) { // id is not _id here, I suggest you to name it category instead 
return this.userModel.find({ category: id }).exec();
}

注意,这里不需要async/await,因为您正在返回promise本身

希望它能帮助

最新更新