Hola! cuando hago una petición para obtener productos solo me devuelve 1. <code> [ { &quot;name&quot;: &quot;Practical Frozen Pants...

Mauricio Gonzalez Falcon

Mauricio Gonzalez Falcon

Pregunta
studenthace 4 años

Hola! cuando hago una petición para obtener productos solo me devuelve 1.

[ { "name": "Practical Frozen Pants", "price": 446, } ]

¿Alguien sabe que puede ser? Aquí mi código:

// ProductsServices.js const faker = require("faker"); class ProductsService { constructor(){ this.products = []; this.generate(); } generate(){ const limit = 100; for(let i = 0; i < limit; i++){ this.products.push([{ id: faker.datatype.uuid, name: faker.commerce.productName(), price: parseInt(faker.commerce.price(), 10), }]); } } create(){ } find(id){ return this.products.find(item => item.id === id); } findOne(){ } update(){ } delete(){ } } module.exports = ProductsService;
// Remember: define a method to name files when you're working with others. // Products.js const ProductsService = require("./../services/productsServices") const express = require("express"); const service = new ProductsService(); const router = express.Router(); router.get("/", (req, res) => { const products = service.find(); res.json(products); }); router.get("/:id", (req, res) => { const { id } = req.params; const product = service.findOne(id); res.json(product); }); router.post("/", (req, res) => { const body = req.body; res.status(201).json({ message: "created", data: body }) }); router.patch("/:id", (req, res) => { const { id } = req.params; const body = req.body; res.json({ message: "created", data: body, id, }); }); router.delete("/:id", (req, res) => { const { id } = req.params; res.json({ message: "deleted", id, }); }); module.exports = router;
1 respuestas
para escribir tu comentario
    Andrés Castellanos

    Andrés Castellanos

    studenthace 4 años

    El error está en este método (servicio):

    find(id){ returnthis.products.find(item => item.id === id); }

    lo estás usando para la consulta (get) de products:

    router.get("/", (req, res) => { const products = service.find(); res.json(products); });

    Fijate que el método find solo devuelve el producto que tenga la misma id que se le pasa como parámetro, en realidad este debería ser el código para el método findOne.

    El Método find lo que tiene que hacer es retornar todos los productos. Y como todos los productos se almacenan en el array "this.products" el código quedaría así:

    find(){ return this.products; }
Curso de Backend con Node.js: API REST con Express.js

Curso de Backend con Node.js: API REST con Express.js

¡Aprende desarrollo backend con Node.js! Trabaja con rutas, servidores y middlewares de Express.js. Construye una API, manipula errores y haz validación de datos. Despliega tu aplicación a producción en Heroku. Conviértete en backend developer con Node.js junto a tu profesor Nicolas Molina.

Curso de Backend con Node.js: API REST con Express.js
Curso de Backend con Node.js: API REST con Express.js

Curso de Backend con Node.js: API REST con Express.js

¡Aprende desarrollo backend con Node.js! Trabaja con rutas, servidores y middlewares de Express.js. Construye una API, manipula errores y haz validación de datos. Despliega tu aplicación a producción en Heroku. Conviértete en backend developer con Node.js junto a tu profesor Nicolas Molina.