Quiero mostrar los datos de la matriz de datos completos que deben cumplir la condición de que la identificación solicitada coincida con la identificación de los datos. Pero cada vez que pruebo el siguiente código, solo obtengo 'indefinido' como resultado del método de búsqueda.
Código
import express from 'express'; import data from "./data.js" const app=express(); app.get('/products/api/:id',(req,res)=>{ const product = data.products.find((x) => x.id === req.params.id); if (product) { res.send(product) } else{ res.status(404).send({message:`Product Not Found${req.params.id}`}); } }) app.get('/products/api',(req,res)=>{ res.send(data.products) }) app.get('/',function(req,res){ res.send("server is ready") }) const port=process.env.PORT || 5000 app.listen(5000,()=>{ console.log(`serve at http://localhost:${port}`); })A su código le falta el middleware de análisis del cuerpo. Intenta agregar un
app.use(express.json({ extended: true })) antes de sus rutas.
También verifique si la id de data.products.find((x) => x.id === req.params.id); es de tipo string . Puede ser un number o una identificación de objeto de mangosta ObjectId .
Todo lo que necesitas hacer es,
cambia esto:
const product = data.products.find((x) => x.id === req.params.id);a:
const product = data.products.find((x) => x.id == req.params.id);