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

266
Vistas
Obtener req.params.id indefinido al realizar una solicitud de venta

El problema es que cuando realizo la solicitud de venta usando cartero, hay un error en mi terminal vscode que dice:
dejar producto = esperar Producto.findById(req.params.id);
^ TypeError: no se puede leer la propiedad 'id' de indefinido.

Hago esta solicitud en cartero http://localhost:4500/api/v1/product/61dfc2ba3eb817d287929a7a (61dfc2ba3eb817d287929a7a es la identificación) con cuerpo como json sin procesar. req.params.id está llegando a ser indefinido ..

Parecía un error en el análisis, así que le agregué body-parser y cors, pero aparece el mismo error.

Código:

 const express = require("express"); const mongoose = require("mongoose"); const bodyParser = require("body-parser"); const cors = require("cors"); const app = express(); mongoose .connect("mongodb://localhost:27017/sampl", { useNewUrlParser: true, useUnifiedTopology: true, }) .then(() => { console.log("db connected"); }) .catch((err) => { console.log(err); }); app.use(express.json()); app.use(bodyParser.urlencoded({ extended: true })); app.use(bodyParser.json()); app.use(cors()); const productSchema = new mongoose.Schema({ name: String, description: String, price: Number, }); const Product = new mongoose.model("Product", productSchema); //create product app.post("/api/v1/product/new", async (req, res) => { const product = await Product.create(req.body); console.log(req.body); res.status(200).json({ success: true, product, }); }); //read product app.get("/api/v1/products", async (req, res) => { const products = await Product.find(); res.status(200).json({ success: true, products, }); }); //update product app.put("/api/v1/product/:id", async (res, req) => { let product = await Product.findById(req.params.id); product = await Product.findByIdAndUpdate(req.params.id, req.body, { new: true, useFindAndModify: false, runValidators: true, }); res.status(200).json({ success: true, product, }); }); app.listen(4500, () => { console.log("server is working"); });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El objeto req representa la solicitud HTTP y tiene propiedades para la cadena de consulta de la solicitud, los parámetros, el cuerpo y los encabezados HTTP. El objeto res representa la respuesta HTTP que envía una aplicación Express cuando recibe una solicitud HTTP.

Entonces, primero queremos pasar el objeto req y luego res .

cambia esto

 app.put("/api/v1/product/:id", async (res, req) => { let product = await Product.findById(req.params.id);

a

 app.put("/api/v1/product/:id", async (req, res) => { let product = await Product.findById(req.params.id);
about 4 years ago · Juan Pablo Isaza 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