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

185
Vistas
¿Cómo puedo configurar mi punto final de Express API para devolver respuestas dinámicas basadas en los parámetros de URL?

Estoy trabajando en un proyecto de administración reactiva que implica una conexión a un servidor express a través de un proveedor de datos.

No he podido hacer funcionar la ordenación o la paginación, y entiendo que tengo que hacer cambios en mis respuestas rápidas de la API para que estas funciones funcionen.

Escribí el código a continuación para detectar qué está enviando el parámetro de clasificación, con la esperanza de poder tener una respuesta API diferente según la URL de clasificación.

Me ha costado mucho conseguir que funcionen las funciones de ordenación y paginación. ¡Por favor ayuda si puedes! TY

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { const user_id = req.query.sort console.log(user_id) if(req.query.sort === ["id","ASC"]) { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSDESC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else if(req.query.sort === ["email","ASC"]) { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSASC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSELSE") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } });```
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Para empezar, puede almacenar dos vars en una clasificación de variable de consulta única. Puede diseñar sus queryParams Like /?sortBy=id&sortOrder=DESC

Su código expreso podría verse así

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { const user_id = req.query.sort const sortBy = req.query.sortBy const sortOrder = req.query.sortOrder //if(req.query.sort === ["id","ASC"]) { if(sortBy === "id" && sortOrder === "ASC") try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSDESC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } // else if(req.query.sort === ["email","ASC"]) { else if(sortBy === "email" && sortOrder === "ASC") { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSASC") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } else { try { connection.execute( // getUsers, getUsersASC, function(err, users, fields) { console.log("USERSELSE") res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } } });
about 4 years ago · Juan Pablo Isaza Denunciar

0

Pude resolver este problema. Conceptualmente, lo que me faltaba es que react-admin use la clasificación y paginación del servidor.

Una vez que me di cuenta de eso, simplemente escribí un código en mi punto final de API express que pudo recibir correctamente los parámetros de clasificación y filtrado en la consulta de URL, y luego usé una función de creación de consultas para crear una consulta MySQL personalizada que reflejaba esos parámetros.

 usersRouter.get("/", addRAHeader, checkJwt, async (req, res) => { setTimeout(() => { const { sort, range, filter } = req.query if (filter || range || sort !== undefined) { parsedFilter = JSON.parse(filter).q parsedRange = JSON.parse(range) lowerRange = parsedRange[0] upperRange = parsedRange[1] + 1 parsedSort = JSON.parse(sort) querySQL(queryBuilder(`${parsedSort[0]} ${parsedSort[1]}`, `${parsedRange[0]},${(upperRange - lowerRange)}`, parsedFilter), res) } else { querySQL(getUsers, res) } }, 1000) }); function queryBuilder (orderByParam, limit=10, filter='') { const query = `SELECT * FROM users Where email like '%${filter}' ORDER BY ${orderByParam} LIMIT ${limit};` // console.log("QueryBuilt:", query) return query } let querySQL = (query, res) => { try { connection.execute( query, function(err, users, fields) { res.status(200).json(users) } ) } catch (err) { res.json({message:err}); } }

Una combinación de estas funciones anteriores resolvió el problema para mí.

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