De acuerdo, ahora estamos diciendo que encontramos el tema ejercicio. Entonces, ahora en nuestro patrón, hemos agregado algunas cosas. Hemos agregado esta llave rizada. Entonces, en esta llave rizada, estamos diciendo, Anthony dice que no ve el nombre de usuario y la contraseña. Entonces sí, debería estar en el chat. El nombre de usuario es newsgraph y la contraseña también es newsgraph. Puedo poner eso en Discord también. Oh sí, déjame poner esto en Discord también. Navegador web, news.graph.zone, el nombre de usuario es newsgraph y la contraseña es newsgraph. Genial, así que ese es un usuario de solo lectura de la base de datos. No vamos a usar este en toda la masterclass pero creo que es útil tener algunos datos en Neo4j para jugar. Genial, en esta consulta, estamos diciendo, encontrar el tema con el nombre ejercicio, eso es lo que indican estas llaves rizadas. Las llaves rizadas en el patrón se refieren a pares clave-valor de propiedades y luego recorremos a lo largo de esta relación tiene tema para encontrar nodos de artículo que están conectados al tema ejercicio y eso es exactamente lo que obtenemos aquí. Aquí está el nodo del tema ejercicio, aquí están todos estos artículos que están conectados y si hacemos doble clic en ellos, podemos recorrer y ver, okay, aquí están otros temas de este artículo, así que este trata sobre golf y ejercicio aquí hay otros artículos sobre golf así que podemos hacer eso visualmente o podemos agregar podemos agregar patrones de grafo más complejos, más piezas de patrón de grafo al patrón en el que estamos haciendo coincidir así que podemos decir tal vez queremos saber qué otros temas tienen estos artículos así que simplemente agregamos a nuestro patrón aquí para todos los artículos que tienen el tema ejercicio qué otros temas tienen y puedes ver que hay una mezcla bastante grande aquí. Genial, eso es Cypher y Neo4j Browser. Creo que esa es probablemente una buena introducción rápida y podemos pasar a ver cómo encaja esto en el contexto de
GraphQL. De acuerdo, genial, volvamos a nuestras diapositivas aquí. Genial, así que tenemos nuestras diapositivas aquí. Entonces, hablemos un poco sobre
GraphQL para que todos estemos en la misma página. Creo que algunas personas han indicado que han trabajado con
GraphQL. Entonces, algunas de estas cosas pueden ser familiares para las personas. Algunas de estas cosas son nuevas, eso también es genial. Pero hablemos un poco sobre
GraphQL separado de trabajar con una base de datos separado de Neo4j, conceptos de
GraphQL por sí solos. Entonces, fundamentalmente,
GraphQL es un lenguaje de consulta de API y un tiempo de ejecución, supongo, para construir y cumplir con las solicitudes de la API. Con
GraphQL usamos un sistema de tipos para definir qué datos están disponibles en la API. Entonces, estamos hablando de qué entidades, atributos y cómo están conectados. Entonces, definimos con las definiciones de tipo de
GraphQL qué tipos hay y qué campos existen en esos tipos si son nulos o no nulos. Y también tenemos campos de relación en un tipo que se refieren a otros tipos. Ahí es donde entra la parte de grafo de
GraphQL. Estamos hablando de cómo se conectan estos objetos. Luego, en el momento de la consulta, el cliente es libre de solicitar un recorrido a través de este gráfico de datos y exactamente qué piezas de los datos desean que se devuelvan en el momento de la consulta. Entonces, nuestras operaciones de
GraphQL van a especificar un punto de entrada y luego un recorrido a través del gráfico de datos. Estos puntos de entrada, estos son campos en tipos especiales llamados consulta o mutación o suscripción. No vamos a hablar de suscripciones hoy. Entonces, un par de conceptos importantes, especialmente para construir la parte del servidor de
GraphQL de esto y conceptos importantes. Entonces, el primero es este concepto de definiciones de tipo de
GraphQL. Entonces, las definiciones de tipo pueden definir los datos que están disponibles en la API. Normalmente usamos lo que se llama la definición de esquema o SDL para definir estos tipos. Puedes definir tus tipos programáticamente dependiendo de qué implementación del servidor de
GraphQL estés usando. Pero SDL es bueno porque no depende del lenguaje. Entonces, no importa si estamos construyendo un servidor de
GraphQL en Java,
JavaScript o Python, el SDL se compartirá porque no está específico de un lenguaje de programación en particular. También usaremos directivas. Entonces, aquí puedes ver que estamos definiendo algunos tipos y estamos definiendo campos que existen en estos tipos. Entonces, tenemos películas, tenemos géneros, tenemos actores. Las películas tienen un título, es una cadena, un año, eso es un entero y así sucesivamente. Y luego estamos diciendo cómo estos tipos están relacionados entre sí. Entonces, con las películas, estamos diciendo que tienen un campo de géneros que es un campo de matriz de objetos de géneros. Cuando llegamos a usar la biblioteca de
GraphQL de Neo4j, y estamos pensando en cómo representar el modelo de grafo de propiedades que estamos viendo en Neo4j en las definiciones de tipo de
GraphQL, usamos directivas, como anotaciones en el esquema. Entonces, aquí hemos agregado esta directiva de relación que nos permite especificar el tipo y la dirección en el modelo de grafo de propiedades, ya que en el modelo de grafo de propiedades, tenemos una dirección y un tipo con nombre para cada relación, pero lo cubriremos cuando lleguemos allí. De acuerdo, eso son las definiciones de tipo. Otro concepto importante es esta idea de operaciones de
GraphQL. Entonces, una consulta es realmente una operación donde estamos enviando este documento. ¿Qué es el documento? El documento es la consulta de
GraphQL, esencialmente, o la operación. Entonces, una consulta es una consulta, que va a comenzar con un campo en el tipo de consulta o una mutación o una suscripción. Y comenzamos en el nivel raíz, el punto de entrada, piénsalo, para la API, que va a ser un campo en, en este caso, el tipo de consulta, y ese campo puede opcionalmente tomar argumentos. Entonces, aquí estamos buscando películas donde el título es A River Runs Through It. Y luego la siguiente parte de nuestra consulta gráfica es el conjunto de selección, y el conjunto de selección es esta estructura anidada que creo que es importante para especificar dos cosas. Uno es especificar este recorrido a través del gráfico de datos. Entonces, partimos de esta película, A River Runs Through It, y luego recorremos a actores, a géneros, a directores, y luego para los directores, también estamos recorriendo para ver otras películas que esos directores dirigieron. ¿Quién dirigió A River Runs Through It? ¿Qué otras películas dirigieron? Eso es lo que esta parte del conjunto de selección está diciendo, está en esta estructura anidada. Los campos en nuestro conjunto de selección también pueden tomar argumentos opcionalmente. Entonces, aquí, solo estamos obteniendo los primeros dos actores que estuvieron en esta película, y luego solo estamos obteniendo tres películas que los directores de A River Runs Through It también dirigieron. Y luego puedes ver, cuando nuestros datos regresan, la forma de los datos, así que en este caso, es un documento JSON, coincide exactamente con la forma de nuestra consulta, por lo que el cliente sabe exactamente qué datos está recibiendo. Entonces, así es como escribimos consultas y operaciones. ¿Cómo implementamos la lógica del
backend para un servidor de
GraphQL? Bueno, aquí es donde entran las funciones de resolución. Entonces, las funciones de resolución, estas son funciones que realmente tienen la lógica para obtener datos de la capa de datos. Entonces, consultando la base de datos, incluso podemos consultar otras API, por lo que
GraphQL es agnóstico de la capa de datos, realmente podemos construir APIs de
GraphQL sobre cualquier capa de datos. El ejemplo que tenemos aquí, esto está mirando una aplicación para conferencias. Entonces, tenemos sesiones, las sesiones están en una sala, las sesiones tienen un tema, tenemos sesiones recomendadas. Entonces, si te gusta esta sesión, aquí hay otras sesiones que podrían interesarte, este tipo de cosas.
Comments