¿Cómo acceder a los valores del query string con express?
Express tiene un parser (analizador) que permite leer el query string, a diferencia del módulo http
que carece de el, y que obliga a los desarrolladores a realizar dicho análisis manualmente. Debido a que dicho parsing es una característica de express, no hay necesidad de instalar paquetes adicionales con npm.
Por ejemplo, al realizar la consulta de los comentarios de un artículo y queremos restringir dicha consulta a solo 30 resultados, organizados por autor y fecha de publicación. El primer instinto que pudiéramos tener es crear mas parámetros para la ruta como… “/articles/:articleId/comments/:authorId/:createdAt”. Sin embargo, que sucede cuando tenemos mayores requerimientos, como leer también los comentarios pero solo ordenados por fecha o solo aquellos a partir de determinada fecha.
En nuestro caso el único requerimiento fijo es poder leer los comentarios de un artículo, los parámetros adicionales para restringir la consulta son variables. En este caso todos aquellos deben ser incluidos como parte del query string, de otra forma tendríamos que crear un número enorme en la cantidad de rutas.
/articles/:articleId/comments?authorId=####&createdAt=####
Ejemplo de como acceder los valores del query string en express
app.get('/search', (req, res) => {
const articleId = req.params.articleId;
const authorId = req.query.authorId;
const createdAt = req.query.createdAt;
const sql = `select * from comments where article_id = $articleId and author_id = $author_id and created_at <= $createdAr`;
db.query(sql, (err, comments)){
if(error) return res.status(500).send(error);
return res.status(200).send(comments);
}
});
Podemos construir dentro de la misma ruta condicionales para realizar una consulta en base a los argumentos provistos.