Получить все записи по категориям Гнездо Js + MongoDB + Mongoose - PullRequest
0 голосов
/ 30 апреля 2020

Я использую Nest Js + MongoDB + Mon goose, и я хотел бы получить все записи в MongoDB с записью, которую я отправляю по параметру, но я не получаю ее, я новичок Как я могу получить все записи из той же категории? Я отправляю идентификатор категории в запросе, но я не получаю все записи для этой категории, не могли бы вы мне помочь?

Мне нужно это:

GET / users / food and return это:

{"пароль": "123", "имя": "Брайан", "адрес": "", "электронная почта": "a@a", "категория": "еда", "cpfOrCnpj": "string"},

{"password": "123", "name": "Mar go", "adress": "", "email": "a@a "," category ":" food "," cpfOrCnpj ":" string "}

мой код:

мой сервис:

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);
  }

}

1 Ответ

0 голосов
/ 30 апреля 2020

В этой функции

  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();
  }

Примечание вам не нужно асинхронное / ожидание здесь, поскольку вы возвращаете само обещание

надеюсь, что это поможет

...