‫Instructor: Ahora implementemos la clasificación de resultados.
‫Para permitir que nuestros usuarios clasifiquen los resultados en función
‫de un campo determinado.
‫Entonces, ahora echemos un vistazo a todos nuestros resultados aquí por ahora.
‫Muy bien, digamos que realmente
‫queremos ordenar estos resultados, digamos por precio.
‫Bien, entonces comenzando con el precio más bajo y
‫luego subiendo hasta el precio más alto.
‫De acuerdo, tenemos todo tipo de precios.
‫397, 497, 1197, 1497, 997.
‫Tenemos incluso casi 3000 aquí.
‫Luego, 1497 y, por lo tanto, no están realmente en orden,
‫por lo que permitamos que el usuario básicamente ordene estos resultados en función de un
‫campo que se pueda pasar usando la cadena de consulta.
‫Digamos que queremos ordenar por precio.
‫Está bien.
‫Entonces, si ejecutamos esto ahora, por supuesto,
‫no pasará nada, seguirá mostrando exactamente
‫los mismos nueve resultados y en el mismo orden, porque antes,
‫en la última lección, filtramos básicamente este campo de clasificación.
‫¿Derecha?
‫Y ahora sigamos adelante y usémoslo.
‫¿Está bien?
‫Entonces, recuerde aquí cómo creamos el objeto de consulta
‫y luego excluimos el campo de
‫clasificación aquí, para que no contamine nuestro filtrado, ¿verdad?
‫Pero ahora realmente lo necesitamos, así que usémoslo.
‫Entonces, la tercera característica aquí es la clasificación.
‫O en realidad, bueno,
‫ese es el segundo, así que llamémoslo 1A y 1B.
‫¿Está bien?
‫Entonces, digamos que si realmente hay una clasificación, clasificación
‫req. consulta. clasificar.
‫Está bien, y lo ves aquí abajo.
‫Ahora desapareció debido a este error aquí, pero de todos modos.
‫Desde nuestra última solicitud obtuvimos,
‫por supuesto, hay un objeto de consulta
‫aquí y allí teníamos la propiedad sort, ¿de acuerdo?
‫Y si hay una propiedad
‫de ordenación, bueno, eso
‫significa que queremos ordenar los resultados en función del valor.
‫Ahora, una cosa rápida que
‫debemos hacer es cambiar esta consulta de
‫variable aquí de una constante a una variable normal.
‫Así que vamos, ¿de acuerdo?
‫Porque ahora queremos encadenar algo a
‫esta consulta.
‫Entonces, la nueva consulta será consulta. clasificar.
‫Y queremos ordenarlo por req. consulta. clasificar.
‫Muy bien, porque ese será el valor del campo, así
‫que en este caso el
‫precio, y Mongoose automáticamente clasificará el resultado
‫según el precio.
‫Y ahora, en caso de que
‫se esté preguntando, por qué funciona de esta manera, entonces, por
‫qué hicimos esto aquí, recuerde de lo que hablamos en las últimas conferencias.
‫Entonces, recuerda cómo esta gira. buscar aquí
‫devolverá una consulta, ¿verdad?
‫Y entonces almacenamos ese objeto de consulta
‫aquí en esta variable, para que
‫luego podamos seguir encadenando más métodos a él.
‫Entonces, hay más de estos métodos que están
‫disponibles en todos los documentos creados a través de la clase de consulta.
‫Vale, ¿recuerdas eso?
‫Creo que hablamos de eso en profundidad hace dos conferencias.
‫Entonces, en caso de que esto todavía le resulte un
‫poco confuso, vuelva
‫allí o también puede echar un vistazo a la documentación, ¿de acuerdo?
‫Ahora probemos esto.
‫Por lo tanto, la clasificación todavía está establecida en el precio.
‫Así que lo enviaré ahora.
‫Echemos un vistazo al resultado.
‫Y, de hecho, comenzamos con el precio más bajo,
‫pero creo que ya lo teníamos antes.
‫Entonces comenzamos con 397, luego 497, luego 997, 1197, 1497,
‫y ves que los precios en realidad siguen aumentando.
‫Entonces 1997, 2997.
‫Y sí, de hecho, ahora están ordenados.
‫¿Okey?
‫Así que los clasificamos por precio en orden ascendente.
‫Pero también podemos ordenarlos en orden descendente.
‫Eso es muy simple.
‫Todo lo que tenemos que hacer es establecer el signo menos aquí.
‫Entonces, menos precio y Mongoose los clasificará automáticamente
‫en el otro orden.
‫Entonces, en orden descendente.
‫Así que probemos eso también.
‫Y ahora deberíamos comenzar con, sí,
‫exactamente, con este.
‫Entonces, el primero es
‫ahora el más alto y el último es el 397.
‫Frio.
‫Pero en realidad podemos dar un paso más,
‫porque tenemos muchos casos aquí que tienen el mismo precio.
‫Pero, ¿cómo se ordenan estos resultados con el mismo
‫precio dentro de ellos?
‫Entonces, digamos que tenemos este con este precio
‫y luego este con el mismo precio.
‫Entonces, ¿por qué este aparece antes que el segundo?
‫Lo mismo con este de aquí tal vez,
‫oh, en realidad no.
‫Así que este es el único de 1997.
‫Pero aquí de nuevo tenemos estos dos por el mismo precio.
‫Tenemos, está bien, todos son diferentes.
‫De acuerdo, estos son todos diferentes.
‫Pero queremos clasificarlos, básicamente, según
‫un segundo criterio.
‫Entonces, en caso de que haya un
‫empate, entonces queremos tener un segundo
‫campo por el cual podamos ordenar dónde el primero es el mismo.
‫Entonces en este caso el precio.
‫Así que en Mongoose eso es bastante
‫fácil, y déjame mostrarte eso aquí como un comentario, por ejemplo.
‫Entonces, en Mongoose solo diríamos ordenar y ahora mismo
‫tenemos el precio, así que lo tenemos así, pero
‫luego en Mongoose
‫todo lo que tenemos que
‫hacer es agregar otro nombre de campo a la cadena.
‫Entonces, por ejemplo, calificación promedio.
‫O creo que son calificaciones.
‫Bien, y ahora queremos pasar este campo aquí también a
‫nuestro tipo.
‫¿Okey?
‫Ahora no podemos dejar un espacio aquí en la URL
‫y, en su lugar, agregaremos una coma.
‫¿Okey?
‫Así que queremos ordenar primero por
‫precio y luego como segundo criterio, también por calificación promedio.
‫¿Okey?
‫Y ahora todo lo
‫que tenemos que hacer es básicamente reemplazar esta coma aquí con un espacio.
‫¿Está bien?
‫Y, por supuesto, podríamos tener
‫incluso más campos por los que clasificar.
‫¿Okey?
‫Pero por ahora dejémoslo
‫así e implementémoslo muy rápidamente en nuestro código.
‫¿Está bien?
‫Y de hecho, déjame crear una nueva variable aquí.
‫Llamémoslo ordenar por.
‫Y así tenemos req. consulta. sort y lo
‫que vamos a hacer ahora es dividirlo por comas.
‫Entonces, divida la cadena por la coma, y esto devolverá una matriz de todas
‫las cadenas, por lo que todos los
‫nombres de campo,
‫y luego todo lo que tenemos que hacer es volver
‫a unirlos usando join, y como la cadena de combinación usamos un espacio.
‫¿Está bien?
‫Y solo para asegurarse de que sea correcto.
‫Consola. log, ordenar por, y luego, por
‫supuesto, aquí queremos usar esa ordenación por variable.
‫¿Okey?
‫Así que echemos un vistazo a eso.
‫Y.
‫Entonces 4. 7 aquí, y el otro también tiene 4. 7, ¿de acuerdo?
‫Entonces, sigamos adelante y usemos nuestra API para cambiar
‫este promedio de calificaciones aquí.
‫¿Okey?
‫Entonces, solo como un
‫experimento divertido, copiemos esta ID aquí, luego actualice el recorrido, y vengamos
‫aquí al cuerpo, por lo que quiero actualizar
‫el promedio de calificaciones a 4. 9.
‫¿Okey?
‫Enviemos eso, y de hecho, verá que se actualizó.
‫Y ahora cambiemos eso de nuevo, o
‫intentémoslo de nuevo en realidad.
‫Y ahora ves que el primero todavía tiene 4. 7 y este
‫de aquí ahora tiene 4. 9.
‫Y ahora están ordenados con una calificación ascendente.
‫¿Derecha?
‫Y, por supuesto, podríamos poner un menos
‫aquí y entonces deberían cambiar de posición, es decir,
‫el que tiene 4. 9 debería aparecer primero.
‫Intentémoslo también.
‫Y sí, de hecho.
‫Así que ahora este, el tour de los amantes
‫del deporte, es el que aparece primero.
‫Está bien, genial.
‫Entonces parece que está funcionando.
‫Echemos un vistazo a nuestros resultados aquí.
‫Y sí, de hecho.
‫Y echemos un vistazo a lo que registramos
‫aquí en la consola.
‫Y así, sí, esta es nuestra clasificación por variable, que sí.
‫Qué tipo de parece similar a lo que tenemos aquí.
‫Y ese fue el objetivo de crear esta variable.
‫Genial, eso ahora está funcionando.
‫Deshagámonos de esta consola y de esta aquí también.
‫Y esta bien.
‫Y
‫para terminar aquí, agreguemos uno predeterminado.
‫Y lo hacemos simplemente agregando un bloque else aquí.
‫Entonces, en caso de que el usuario no especifique ningún
‫campo de clasificación en la cadena de consulta de la URL,
‫de todos modos agregaremos una clasificación a la consulta.
‫Entonces consulta. sort y luego ordenaremos
‫por el campo de agregar creado, ¿de acuerdo?
‫Y de hecho en orden
‫descendente, de modo que los más nuevos aparezcan primero.
‫Entonces menos creado en.
‫¿Está bien?
‫Dale una oportunidad a esto.
‫Y sí, pienso así, hemos terminado.
‫Desactivemos esta opción aquí también.
‫Y ahora volvemos a nuestra URL normal sin
‫cadenas de consulta.
‫Entonces, echemos un vistazo
‫si esto ahora está realmente ordenado por el creado en.
‫Así que este de aquí termina en 59 segundos y 30.
‫5930 también.
‫Y si.
‫Así que todos fueron creados en
‫el mismo momento exacto, porque los importamos todos al mismo tiempo.
‫¿Está bien?
‫Entonces, en este caso, realmente no podemos ver
‫el efecto de este fragmento de código que acabamos
‫de agregar aquí, pero en caso de que estos documentos
‫se agreguen en diferentes momentos, ahora
‫se ordenarían por la fecha en que fueron creados.
‫¿Está bien?
‫Así que eso es todo para clasificar.
‫A continuación, hablaremos de limitar los campos que
‫queremos en nuestros resultados.