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

230
Vistas
Los parámetros de solicitud no contienen valores adecuados

Estoy usando Mongoose para construir una API REST usando NodeJs y tengo problemas con los parámetros de req.

El código que estoy usando (modelo) es el siguiente:

 'use strict'; var mongoose = require('mongoose'); var Schema = mongoose.Schema; var RequestSchema = new Schema({ query: { type: String, default: '' }, number: { type: String, default: '' }, subject: { type: String, default: '' } }); module.exports = mongoose.model('Cel', RequestSchema)

Sin embargo, cuando uso el siguiente código de mi controlador (answerQuery se usa para una solicitud POST) e imprimo los valores, encuentro valores inesperados:

 exports.answerQuery = function(req, res) { console.log('query is : ' + req.params.query); // this is undefined console.log('query is : ' + req.body.query); // this is the value of query console.log('query is: ' + req.params.number); // this is the value of number console.log('subject is : ' + req.params.subject); // this is undefined };

Entiendo por qué funciona req.body.query , pero estoy confundido en cuanto a por qué no funcionan req.params.query y req.params.subject (return undefined) pero sí lo hace req.params.number . No he usado mucho Javascript y creo que podría estar perdiéndome algo aquí.

Edición 0: estoy usando una solicitud POST para esto

Edición 1: Este es mi archivo de ruta:

 'use strict'; module.exports = function(app) { var celRequest = require('../controllers/celSearchController'); // Routes app.route('/celsearch/:number') .post(celRequest.answerQuery); };
about 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Tu ruta es esta:

 POST /celsearch/:number

Esto define un parámetro, number . Se accede a los parámetros a través de req.params , por lo que funciona req.params.number .

Está intentando acceder a req.params.subject , refiriéndose a un parámetro llamado subject , que no existe. Por lo tanto, es indefinido. Lo mismo ocurre con req.params.query .

Debido a que es una ruta POST, y es más común pasar datos a rutas POST usando el cuerpo de la solicitud, esos datos terminan en req.body . Dado que el cliente pasa un parámetro llamado "consulta" en el cuerpo de la solicitud, req.body.query funciona.

Asi que:

  • req.params se usa para parámetros de ruta, los marcadores de posición :NAME en la declaración de ruta;
  • req.body se usa para los parámetros pasados en el cuerpo de la solicitud, comúnmente usado para solicitudes POST ;
  • req.query se usa para los parámetros pasados en la URL como una cadena de consulta: /foo/bar?query=somevalue . Esto se usa generalmente para solicitudes GET .
about 4 years ago · Santiago Trujillo 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