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

79
Vistas
NodeJS Express: tengo dos solicitudes app.get y se combinan

Así que tengo 1 solicitud que es

 app.get('/assignment/loans', (req, res) => { const id = req.query.bookID; }

y otra que es esta:

 app.get('/assignment/loans', (req, res) => { const id = req.query.studentID; }

Por alguna razón, el ID de estudiante no funciona y siempre va al ID de libro para buscar. yo uso esto

http://localhost:3000/assignment/loans?bookID=1

y funciona según lo previsto, pero si uso

http://localhost:3000/assignment/loans?studentID=9653

Yo obtengo:

ingrese la descripción de la imagen aquí

que es un error que solo debería aparecer para el bookID. ¿Cómo puedo diferenciar los dos? Gracias de antemano.

Más código sobre las dos solicitudes: https://pastebin.com/1A0jK3BX

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

No puede tener 2 rutas con la misma URL. el primero tiene prioridad. Tienes que manejarlo así.

 app.get('/assignment/loans', (req, res) => { const bookID = req.query.bookID; const studentID = req.query.studentID; if(bookID){ } if(studentID){ } }
about 4 years ago · Juan Pablo Isaza Denunciar

0

en realidad, express framework ejecutará el primer punto final cuando se produzca la solicitud, que es

 app.get('/assignment/loans', (req, res) => { const id = req.query.bookID;})

en caso de punto final duplicado, por lo que debe usar una ruta y poner dos consultas en lugar de una para que el código sea así

 app.get('/assignment/loans', (req, res) => { const book_id = req.query.bookID; const student_id = req.query.studentID })

también debe realizar la validación de las consultas antes de ejecutarlas en db

about 4 years ago · Juan Pablo Isaza Denunciar

0

Tienes exactamente las mismas rutas

app.get('/assignment/loans', ...) tiene que ser una ruta.

Intenta combinarlos así a continuación

 app.get('/assignment/loans', (req, res) => { const bookId = req.query.bookID; const studentId = req.query.studentID; const loans = []; if(bookId){ if(!Number.isInteger(parseInt(studentId))){ return res.status(422) .setHeader('content-type', 'application/json') .send({error: 'bookId not numeric'}); } db.all('SELECT * FROM loan WHERE bookID=?', bookId, (err, rows) => { if (err) { res.status(422) .setHeader('content-type', 'application/json') .send({error: 'Problem while querying database'}); return; } if (rows.length === 0) { res.status(404) .setHeader('content-type', 'application/json') .send({error: 'loan bookId was not found!'}); } else { rows.forEach(row => loans.push({id: `${row.id}`, bookID: `${row.bookID}`})); res.status(200) .setHeader('content-type', 'application/json') .send(loans); } }); }else if(studentId){ if(!Number.isInteger(parseInt(studentId))){ return res.status(422) .setHeader('content-type', 'application/json') .send({error: 'studentId not numeric'}); } db.all('SELECT * FROM loan WHERE studentID=?', studentId, (err, rows) => { if (err) { return res.status(422) .setHeader('content-type', 'application/json') .send({error: 'Problem while querying database'}); } if (rows.length === 0) { res.status(404) .setHeader('content-type', 'application/json') .send({error: 'loan studentId was not found!'}); } else { rows.forEach(row => loans.push({id: `${row.id}`, studentID: `${row.studentID}`})); res.status(200) .setHeader('content-type', 'application/json') .send(loans); } }); }else{ return res.status(400) .setHeader('content-type', 'application/json') .send({error: 'Please provide required query string'}); } });
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