Overview
el Atlas GraphQL La API permite que las aplicaciones cliente accedan a datos almacenados en un clúster MongoDB Atlas vinculado utilizando cualquier cliente GraphQL estándar.
Atlas App Services crea automáticamente tipos GraphQL para cada colección vinculada con un esquema definido y evalúa los permisos basados en roles para todas las solicitudes GraphQL. Para saber cómo hacer que los datos estén disponibles a través de la API GraphQL, consulte Exponer datos en una colección.
Para obtener más información sobre los tipos y operaciones generados que puede utilizar con la API GraphQL de Atlas, consulte Tipos y solucionadores de GraphQL.
Para ampliar la funcionalidad de la API GraphQL generada con consultas y mutaciones personalizadas,consulte Definir un solucionador personalizado.
Nota
Cree un clúster Atlas gratis
La API de GraphQL te permite acceder a los datos almacenados en un clúster de MongoDB Atlas o en una instancia de base de datos federada. Para empezar, crea un clúster gratuito y vincúlalo a tu aplicación.
Si aún no tiene datos pero aún desea explorar la API GraphQL, considere agregar un conjunto de datos de muestra a su clúster.
¿Por qué GraphQL?
GraphQL es un lenguaje de consulta declarativo y fuertemente tipado para aplicaciones cliente. Los clientes definen la forma y el contenido exactos de los datos que necesitan en una sola solicitud, lo que elimina los problemas de sobrecaptación y evita la necesidad de múltiples y costosos viajes de ida y vuelta al servidor.
Para obtener más información sobre GraphQL, consulte el tutorial oficial de GraphQL.
Cómo App Services crea esquemas GraphQL
Con App Services, se generan el esquema GraphQL y los resolvedores a partir de esquemas JSON para colecciones de MongoDB. Esto difiere de los enfoques tradicionales de desarrollo de esquemas GraphQL, priorizando el código y el esquema.
Para definir su esquema GraphQL con App Services:
Define un esquema JSON para una colección de MongoDB en tu clúster de MongoDB Atlas. Puedes aplicar la forma del esquema de la colección según definiciones personalizadas o usar un esquema generado a partir de los documentos de la colección.
Genere el esquema GraphQL y los solucionadores basados en el esquema JSON de su colección.
Opcionalmente extiende la funcionalidad de tu esquema generado de GraphQL con resolutores personalizados.
Operaciones GraphQL
App Services genera automáticamente tipos y resolvedores para los datos que expones a la API de GraphQL. Los tipos y operaciones generados se nombran según el nombre del tipo base de cada colección expuesta. Si no defines un nombre de tipo, App Services usa el nombre de la colección.
Para obtener más información sobre cómo exponer una colección y nombrar su tipo de datos,consulte Exponer datos en una colección.
Nota
Las solicitudes de mutación y resolución personalizada de GraphQL utilizan transacciones de MongoDB para garantizar la corrección en múltiples operaciones de la base de datos. Si alguna operación de una solicitud falla, la transacción completa falla y ninguna operación se confirma en la base de datos.
Queries
Una consulta GraphQL es una operación de lectura que solicita campos específicos de uno o más tipos. App Services genera automáticamente tipos de consulta para los documentos de cada colección con un esquema definido.
Para obtener más información y ejemplos, incluida una lista de todos los tipos de consultas generados automáticamente,consulte Solucionadores de consultas.
# Find a single movie by name query { movie(query: { title: "The Matrix" }) { _id title year runtime } } # Find all movies from the year 2000 query { movies(query: { year: 2000 }) { _id title year runtime } } # Find the ten longest movies from the year 2000 query { movies( query: { year: 2000 } sortBy: RUNTIME_DESC limit: 10 ) { _id title year runtime } }
Mutaciones
Una mutación de GraphQL es una operación de escritura que crea, modifica o elimina uno o más documentos. App Services genera automáticamente tipos de mutación para los documentos de cada colección con un esquema definido. App Services utiliza transacciones para garantizar escrituras seguras mediante mutaciones.
Para obtener más información y ejemplos, incluida una lista de todos los tipos de mutaciones generados automáticamente, consulte Solucionadores de mutaciones.
# Insert a new movie mutation { insertOneMovie(data: { title: "Little Women" director: "Greta Gerwig" year: 2019 runtime: 135 }) { _id title } } # Update the year of a movie mutation { updateOneMovie( query: { title: "The Matrix" } set: { year: 1999 } ) { _id title } } # Delete a movie mutation { deleteOneMovie(query: { title: "The Room" }) { _id title } } # Delete multiple movies mutation { deleteManyMovies(query: { director: "Tommy Wiseau" }) { _id title } }
Limitaciones
La API de GraphQL puede procesar un máximo de diez resolutores para una consulta o mutación determinada. Si una operación especifica más de diez resolutores, la operación completa falla con el mensaje de error.
"max number of queries reached".La API de GraphQL puede resolver relaciones hasta un máximo de cinco para una consulta o mutación determinada. Si una operación especifica una relación con más de cinco resolutores, la operación completa falla con el mensaje de
"max relationship depth exceeded"error.La API GraphQL espera que los esquemas de colección tengan títulos únicos y genera una advertencia si su modelo de datos contiene títulos duplicados.
Puede ignorar esta advertencia con seguridad si:
Los conflictos de títulos solo involucran objetos incrustados.
Cada esquema con un título dado utiliza una definición idéntica, incluidas las relaciones.
La API de GraphQL no admite actualmente relaciones para campos dentro de matrices de objetos incrustados. Puede usar un solucionador personalizado para buscar y resolver manualmente las relaciones de las matrices de objetos incrustados.