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 automatically creates GraphQL types for every linked collection that has a defined schema and evaluates role-based permissions for all GraphQL requests. To learn how to make data available through the GraphQL API, see Expose Data in a Collection.
To learn about the generated types and operations that you can use with the Atlas GraphQL API, see GraphQL Types & Resolvers.
Para ampliar la funcionalidad de la GraphQL API generada con queries y mutaciones personalizadas, consulta Definir un resolvedor personalizado.
Nota
Create an Atlas Cluster for Free
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.
How App Services Creates GraphQL Schemas
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 resolutores para los datos que se expongan en la API GraphQL. Todos los tipos y operaciones generados se nombran según el nombre del tipo base de cada colección expuesta. Si no se define un nombre de tipo, Servicios de aplicación utiliza 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.
For more information and examples, including a list of all automatically generated query types, see Query Resolvers.
# 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
A GraphQL mutation is a write operation that creates, modifies, or deletes one or more documents. App Services automatically generates mutation types for documents in each collection that has a defined schema. App Services uses transactions to ensure safe writes via mutations.
For more information and examples, including a list of all automatically generated mutation types, see Mutation Resolvers.
# 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:
The title conflicts only involve embedded objects.
Cada esquema con un título dado utiliza una definición idéntica, incluidas las relaciones.
The GraphQL API does not currently support relationships for fields inside arrays of embedded objects. You can use a custom resolver to manually look up and resolve embedded object array relationships.