‫Instructor: Como la siguiente característica de nuestra
‫API, tenemos la limitación de
‫campos, así que, básicamente, para permitir que los
‫clientes elijan qué campos
‫quieren volver en la respuesta.
‫Entonces, para un cliente, siempre es ideal recibir
‫la menor cantidad de datos posible, con
‫el fin de reducir el ancho
‫de banda que se consume con cada solicitud.
‫Y eso, por supuesto, es
‫especialmente cierto cuando tenemos conjuntos de datos con muchos datos, ¿verdad?
‫Por eso, es una característica
‫muy buena permitir que el usuario de la API solo solicite algunos de los campos.
‫Entonces, como tercera característica, tendremos limitación de campo.
‫Y, como antes, permítanme comenzar mostrándoles
‫cómo funcionará aquí en Postman.
‫Entonces, vamos a especificar un campo llamado campos, y luego
‫el nombre de
‫los campos que realmente queremos recibir.
‫Así que digamos que
‫solo queremos
‫el nombre, la duración, la dificultad y el precio, de acuerdo.
‫Y así, la implementación será muy similar a lo que
‫hicimos antes con la clasificación.
‫Entonces, si se requiere. consulta. fields, entonces, de
‫nuevo, creemos una variable
‫para estos campos aquí porque, al igual que antes, Mongodbs,
‫en realidad solicita una cadena con
‫el nombre del campo separado por espacios, ¿de acuerdo?
‫Ahora permítanme comenzar por
‫escribir esa parte, está bien, entonces, la consulta en sí.
‫Entonces la consulta es igual a la consulta. seleccionar, ¿de acuerdo?
‫Y aquí, por ejemplo, espera una cadena
‫como, nombre, luego espacio, duración y un precio, por ejemplo, está bien.
‫Y de esta manera, solo
‫seleccionará estos tres nombres de campo y
‫enviará el resultado que solo contenga eso, ¿de acuerdo?
‫Y en realidad, esta operación
‫de seleccionar solo ciertos nombres de campo se llama proyectar, ¿de acuerdo?
‫Entonces, sigamos adelante y
‫creemos básicamente, la cadena, tal como lo hicimos allí, está bien.
‫Entonces comenzamos con req. consulta. campos, luego lo dividimos por
‫una coma y lo
‫unimos con una cadena vacía.
‫Con un espacio en realidad, lo siento.
‫Entonces, con el espacio y
‫eso es, entonces, producirá esta cadena exacta con este formato exacto.
‫Entonces aquí, todo lo que tenemos que hacer es usar estos campos.
‫Luego, al igual que antes, también quiero
‫agregar un valor predeterminado, así que en caso de
‫que el usuario no especifique el campo de campos,
‫está bien, entonces, en ese caso, simplemente eliminaremos algo, ¿de acuerdo?
‫Y permítanme mostrarles eso primero, así que aquí abajo,
‫siempre tenemos este subrayado subrayado V, que se
‫establece en cero, y Mongodbs simplemente crea estos campos
‫porque los usa internamente.
‫Y podríamos desactivarlos, pero esa no es una buena práctica.
‫Nuevamente, porque Mongodbs realmente los usa, está bien, pero
‫lo que podemos hacer es básicamente
‫nunca enviarlos al cliente, por lo que podemos excluirlos.
‫Y la forma en que lo hacemos es, en lugar de
‫hacer un subrayado, un subrayado V como antes,
‫así que como lo hicimos
‫aquí, básicamente, lo prefijamos con un signo menos, ¿de acuerdo?
‫Y menos entonces no incluye, sino que excluye.
‫Entonces, lo que teníamos antes
‫aquí nuevamente, con el nombre, la duración
‫y el precio, era incluir estos campos en la respuesta.
‫Pero de esta manera,
‫con el menos, tenemos todo excepto el campo V aquí, ¿de acuerdo?
‫Así que estamos excluyendo solo este campo, ¿de acuerdo?
‫Así que sigamos adelante y probemos eso.
‫Envíalo, y esperemos y sí, de hecho, la identificación es por
‫defecto, siempre incluida ¿de acuerdo?
‫Entonces, no podemos eliminar eso, pero además de
‫eso, solo tenemos el nombre, la duración, la dificultad y
‫el precio, está bien, y, por supuesto, también podríamos usar ese
‫signo menos para esa exclusión aquí también.
‫Entonces podríamos tener todo, menos el nombre y
‫menos la duración, por ejemplo.
‫Así que probemos eso también.
‫Y así, si lo marca ahora, no verá el nombre y no
‫verá la duración en ninguna parte aquí.
‫Bien, y ahora solo como
‫prueba final, veamos si nuestro valor predeterminado también funciona.
‫Enviando la respuesta y así, ahora ya no
‫tenemos esa variable V aquí establecida en cero en todos los documentos.
‫Muy bien, genial, ahora hay una última cosa que
‫quiero mostrarles y
‫es que también podemos excluir campos directamente del esquema.
‫Muy bien, y eso puede
‫ser muy útil, por ejemplo, cuando
‫tenemos datos sensibles que solo deberían usarse internamente.
‫Por ejemplo, cosas como
‫las contraseñas nunca deben exponerse al cliente y,
‫por lo tanto, podemos excluir
‫algunos campos directamente en el esquema.
‫Por ejemplo, es posible que no queramos
‫que el usuario vea cuándo se creó exactamente cada recorrido.
‫Por ejemplo, es posible que tour
‫ya sea algo antiguo
‫o algo así, así que, digamos que siempre queremos ocultar este
‫campo createdAt, de acuerdo, para que
‫podamos ir a nuestro esquema, que está
‫en el modelo de tour, por supuesto, y
‫luego en createdAt, simplemente establecemos la propiedad select aquí en false.
‫Y ahora, cuando tratamos de obtener nuestros resultados, ves que ya
‫no está ahí, ¿de acuerdo?
‫Y así,
‫básicamente, podemos ocultarlo permanentemente de la salida.
‫Perfecto, una característica más que realmente está funcionando ahora, así
‫que pasemos a la siguiente.