
Mauricio Gonzalez Falcon
PreguntaHola! 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;

Andrés Castellanos
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; }