Express.js ofrece dos mecanismos para proveer de datos al servidor para el filtrado de datos: parámetros de consulta (Query String) y parámetros de ruta (Route parameters).
De MySQL Community Downloads, descargue e instale:
Crea un nuevo proyecto, según Express - Bases, Express - ORM (Básico) y Express - ORM (Intermedio).
hito3-api
La cláusula where se utiliza para filtrar la consulta. Hay muchos operadores para usar en la cláusula where, disponibles con el símbolos de Op
: Op.between
, Op.and
, Op.or
, etc.
routes/fotos.js
const Sequelize = require('sequelize');
por
const { Sequelize, Op } = require('sequelize');
Los parámetros de consulta forman parte de una URL después del signo de interrogación (?). Sirve para enviar datos al servidor, que se utilizarán como filtros para la respuesta.
routes/fotos.js
GET
con la subruta /findAllByRate/json
lower
y higher
, con:
...
let lower = parseFloat(req.query.lower);
let higher = parseFloat(req.query.higher);
...
...
Foto.findAll({
attributes: { exclude: ["updatedAt"] } ,
include: [{
model: Etiqueta,
attributes: ['texto'],
through: {attributes: []}
}],
where: {
calificacion: {
[Op.between]: [lower, higher]
}
}
})
.then(fotos => {
res.json(fotos);
})
.catch(error => res.status(400).send(error))
...
http://localhost:3000/fotos/findAllByRate/json?lower=0&higher=1.2
calificacion
es aleatorio.
Compruebe su funcionamiento con otros valores
http://localhost:3000/fotos/findAllByRate/json?lower=1.2&higher=4.7
http://localhost:3000/fotos/findAllByRate/json?lower=3&higher=6.2
Otra forma para pasar datos al servidor consiste en colocar información dentro de la ruta URL real. A este mecanismo se denomina parámetros de ruta.
routes/fotos.js
GET
con la subruta /findAllById/:id/json
id
, con:
...
let id = parseInt(req.params.id);
...
...
Foto.findAll({
attributes: { exclude: ["updatedAt"] } ,
include: [{
model: Etiqueta,
attributes: ['texto'],
through: {attributes: []}
}],
where: {
[Op.and]: [
{id: id}
]
}
})
.then(fotos => {
res.json(fotos);
})
.catch(error => res.status(400).send(error))
...
http://localhost:3000/fotos/findAllById/1/json
Compruebe su funcionamiento con otros valores
http://localhost:3000/fotos/findAllById/2/json
http://localhost:3000/fotos/findAllById/6/json