Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

273
Views
ExpressJS: cómo cambiar el valor de la clave en la URL de una solicitud de obtención

Así que estoy desarrollando una funcionalidad de paginación personalizada con express y mongoose. Tengo un parámetro de obtención llamado página y necesito cambiar el valor para cada página diferente. El problema es que la forma en que lo hago sigue agregando pares clave-valor de "página" a la URL como esta "&page=1&page=1&page=1". Esto se debe a que no cambio simplemente el valor de "página", sino que agrego el par clave-valor cada vez de la siguiente manera:

 currentPageUrl: req.originalUrl + '&page=' + currentPage

Solo necesito cambiar el valor de la tecla "página". ¿Cómo puedo lograr esto? Cualquier consejo, función de ayuda expresa o solución personalizada ayudaría mucho. ¡Gracias por adelantado!

about 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Si sabe que el parámetro page=xxx ya está ahí, puede usar .replace() :

 currentPageUrl: req.originalUrl.replace(/page=[^&]+/, "page=" + currentPage)

Si no está seguro de si está allí, primero debe probarlo:

 let newUrl; if (req.originalUrl.indexOf("page=") !== -1) { newUrl = req.originalUrl.replace(/page=[^&]+/, "page=" + currentPage); } else if (req.originalUrl.indexOf("?") === -1) { newUrl = req.originalUrl + "?page=" + currentPage); } else { newUrl = req.originalUrl + "&page=" + currentPage); }

Varios casos de prueba:

 function updatePage(origUrl, currentPage) { let newUrl; if (origUrl.indexOf("page=") !== -1) { newUrl = origUrl.replace(/page=[^&]+/, "page=" + currentPage); } else if (origUrl.indexOf("?") === -1) { newUrl = origUrl + "?page=" + currentPage; } else { newUrl = origUrl + "&page=" + currentPage; } return newUrl; } // test cases console.log(updatePage("http://somedomain.com/somePath?page=3", 5)); console.log(updatePage("http://somedomain.com/somePath?whatever=something&page=3", 5)); console.log(updatePage("http://somedomain.com/somePath", 5)); console.log(updatePage("http://somedomain.com/somePath?page=3&whatever=something", 5));


También puede usar la biblioteca de url para analizar la URL en sus partes, cambiar una parte y luego regenerar la URL completa:

 const url = require('url'); let parsedUrl = url.parse(req.originalUrl, true); parsedUrl.query.page = currentPage; delete parsedUrl.search; let newUrl = url.format(parsedUrl);
about 4 years ago · Santiago Trujillo Report

0

Escribí una función que toma una url, un parámetro y el nuevo valor que quieres que sea. Creo que esto hace exactamente lo que quieres.

 const url = require('url') uri = 'http://example.com/cat?page=1&rand=18347109823' function change_parameter(uri, parameter_name, new_value){ parsed_uri = url.parse(uri, true) parameters = [] for ( key in parsed_uri.query ) { if ( key == parameter_name ) { parameters.push( key + "=" + new_value ) } else { parameters.push( key + "=" + parsed_uri.query[key] ) } } return parsed_uri.protocol + "//" + parsed_uri.hostname + "?" + parameters.join("&") } console.log(change_parameter(uri, 'page', '3'))

PRODUCCIÓN

 $ node so.js http://example.com?page=3&rand=18347109823
about 4 years ago · Santiago Trujillo Report

0

Intente usar la biblioteca de direcciones URL. Consulte esta página. https://nodejs.org/docs/latest/api/url.html#url_url_parse_urlstring_parsequerystring_slashesdenotehost

Puedes modificar tu URL como quieras.

Entonces, en su caso, obtendría url.origin y url.pathname pero dependería de lo que quiera obtener.

about 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!