【问题标题】:Get all records by category NestJs + MongoDB + Mongoose按类别获取所有记录 NestJs + MongoDB + Mongoose
【发布时间】:2020-08-15 00:38:39
【问题描述】:

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

我需要这个:

GET /users/food 并返回:

{ “密码”:“123”, “名称”:“布赖恩”, “地址”:“”, “电子邮件”:“a@a”, “类别”:“食物”, “cpfOrCnpj”:“字符串” },

{ “密码”:“123”, “名称”:“玛戈”, “地址”:“”, “电子邮件”:“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);
  }

}

【问题讨论】:

    标签: node.js mongodb mongoose nest nestjs


    【解决方案1】:

    在这个函数中

      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 本身

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-30
      • 2021-04-24
      • 1970-01-01
      • 2014-06-10
      • 1970-01-01
      • 2021-12-14
      • 2020-11-04
      相关资源
      最近更新 更多