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 })); } });