Tengo este código donde envío mi colección a index.ejs
router.get('/', (req, res) =>{ FILM .find().limit(6) .then(films => res.render('index.ejs', {films})) })
En index.ejs
quiero ordenar mi colección por calificación desde el botón. ¿De qué manera puedo hacerlo?
Prueba esto:
router.get('/', (req, res) =>{ var sortFilter = { rating : 1 }; FILM.find().sort(sortFilter).limit(6) .then(films => res.render('index.ejs', {films})) })
Consulte los documentos para obtener más información.
Puede agregar en index.ejs
una etiqueta de anclaje que enviaría una solicitud a /
con un parámetro de URL, algo como esto, por ejemplo:
<a href="/?sort=1">Sort</a>
Cambia su controlador de solicitud, de modo que cuando hay un parámetro de consulta, envíe una lista ordenada, de lo contrario, envíe una normal.
router.get("/", (req, res) => { const sort = req.query.sort; if (sort) { FILM.find() .sort({ rating: 1 }) .limit(6) .then((films) => res.render("index.ejs", { films })); } else { FILM.find() .limit(6) .then((films) => res.render("index.ejs", { films })); } });