Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

356
Visualizações
Cómo validar si una cadena Param es un MongoId en Nestjs sin DTO

Tengo solicitudes en mi controlador, @Param es la versión de cadena de MongoId. Si llamo a esta solicitud con un formato no válido de la cadena, que no coincide con el formato MongoId, la solicitud se procesa hasta que la llamada MongoDB arroja un error interno del servidor.

¿Cómo valido que, por ejemplo, "aaa" o "ANWPINREBAFSOFASD" no se valide y se detenga lo antes posible en mis solicitudes?

Extremo del controlador actual:

 @Get(':id') @ApiOperation({ summary: 'Get nice information' }) findOne( @Param('id') id: string) { return this.niceService.findOne(id); }

El servicio que se llama:

 async findOne(id: string): Promise<NiceDocument> { const niceResult: NiceDocument = await this.NiceSchema.findById(id) if (!niceResult) { throw new NotFoundException() } return table }
about 4 years ago · Santiago Gelvez
2 Respostas
Responde à pergunta

0

La respuesta a esto es usar una tubería de validación personalizada:

Cree la tubería y expórtela:

 import { ArgumentMetadata, BadRequestException, Injectable, PipeTransform } from "@nestjs/common"; import {ObjectId} from 'mongodb' @Injectable() export class ValidateMongoId implements PipeTransform<string> { transform(value: string, metadata: ArgumentMetadata): string{ // Optional casting into ObjectId if wanted! if(ObjectId.isValid(value)){ if((String)(new ObjectId(value)) === value) return value; throw new BadRequestException } throw new BadRequestException }; }

Use la tubería en el controlador para validar la cadena

 @Get(':id') @ApiOperation({ summary: 'Get nice information' }) findOne( @Param('id', ValidateMongoId) id: string) { return this.niceService.findOne(id); }

Alternativamente, puede cambiar el tipo de retorno en la tubería de cadena a ObjectId si está usando mongoDB en lugar de mongoose, mongoose admite solicitudes con la identificación en un formato de cadena

about 4 years ago · Santiago Gelvez Relatório

0

use el validador de clase en nestjs

usando @IsMongoIdObject()
como esto:

 class ParamDTO{ @IsMongoIdObject() id:string }

----Su función---

 @Get(':id') @ApiOperation({ summary: 'Get nice information' }) findOne( @Param() id: ParamDTO) { return this.niceService.findOne(id.id); }
about 4 years ago · Santiago Gelvez Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda