es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Petición GET de Postman para recuperar una entrada de Mongodb por _id.

Estoy intentando construir una solicitud GET de Postman para recuperar una entrada que tengo en MongoDB utilizando el id único generado en la base de datos.

Para ser más preciso, estoy interesado en escribir una solicitud GET para recuperar, por ejemplo, la siguiente entrada:

¿Alguien tiene idea de cómo incluir esa id en la solicitud GET para recuperar el producto de arriba?

¡Gracias!

EDITAR:

@J.F gracias por la amable respuesta y la información proporcionada, pero lamentablemente, todavía no funciona :(.

Estos son los productos que tengo ahora mismo, e intenté obtener el que tiene id=61a51cacdfb9ea1bd9395874

Y esta es la respuesta que obtuve:

También, esta es la lógica que implementé para la solicitud GET:

filename: product.service.ts

async getSingleProduct(productId: string) {
const product = await this.findProduct(productId);
return {
id: product.id,
Name: product.Name,
Code: product.Code,
Weight: product.Weight,
Price: product.Price,
Color: product.Price,
isDeleted: product.isDeleted };
}

private async findProduct(id: string): Promise {
let product;
try {
const product = await this.productModel.findById(id)
} catch (error) {
throw new NotFoundException(‘Product not found’);
}
if (!product) {
throw new NotFoundException(‘Product not found’);
}
return product;
}

filename: product.controller.ts

@Get(‘:id’)
getProduct(@Param(‘id’) prodId: string) {
return this.productsService.getSingleProduct(prodId)
}

EDITAR 2:

@Controller(‘produse’)
export class ProductsController {
constructor(private readonly productsService: ProductsService) {}

@Post()
async addProduct(
@Body(‘Name’) prodName: string,
@Body(‘Code’) prodCode: string,
@Body(‘Weight’) prodWeight: number,
@Body(‘Price’) prodPrice: number,
@Body(‘Color’) prodColor: string,
@Body(‘isDeleted’) prodIsDeleted: boolean,
) {
const generatedId = await this.productsService.createProduct(
prodName,
prodCode,
prodWeight,
prodPrice,
prodColor,
prodIsDeleted);

return { id: generatedId };
“`

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para recuperar una entrada específica en MongoDB utilizando el identificador único generado en la base de datos, deberá incluir el id en la URL al realizar una solicitud GET.

    Por ejemplo, para recuperar el producto con id: 61a51cacdfb9ea1bd9395874, puede realizar una solicitud GET a la siguiente URL: /products/61a51cacdfb9ea1bd9395874.

    En su archivo product.controller.ts, puede utilizar el decorador @Param() para extraer el id de la URL y pasarlo a su función getSingleProduct().

    @Controller('products')
    export class ProductsController {
      constructor(private readonly productsService: ProductsService) {}
    
      @Get(':id')
      getProduct(@Param('id') prodId: string) {
        return this.productsService.getSingleProduct(prodId)
      }
    }
    

    En su archivo product.service.ts, puede utilizar la función findById() proporcionada por la biblioteca Mongoose para recuperar el producto con el id especificado de la base de datos.

    @Injectable()
    export class ProductsService {
      constructor(@InjectModel('Product') private readonly productModel: Model<product>) {}
    
      async getSingleProduct(productId: string) {
        const product = await this.findProduct(productId);
        return { 
          id: product.id,
          Name: product.Name, 
          Code: product.Code, 
          Weight: product.Weight, 
          Price: product.Price, 
          Color: product.Price, 
          isDeleted: product.isDeleted 
        };
      }
    
      private async findProduct(id: string): Promise<product> {
        let product;
        try {
          product = await this.productModel.findById(id).exec();
        } catch (error) {
          throw new NotFoundException('Producto no encontrado');
        }
        if (!product) {
          throw new NotFoundException('Producto no encontrado');
        }
        return product;
      }
    }
    

    Asegúrese de importar la clase NotFoundException desde el paquete @nestjs/common.

    Nota: El código de ejemplo asume que ya ha configurado la conexión de base de datos necesaria y el modelo de esquema Mongoose en su aplicación NestJS.

Comments are closed.