Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

358
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda