Overview
Puedes exponer datos de una colección de MongoDB a aplicaciones cliente, a través de la API de Atlas GraphQL. Atlas App Services genera automáticamente tipos y resolutores GraphQL basados en el esquema de colección y aplica reglas de colección para todas las operaciones GraphQL.
Procedimiento
1. Configurar roles para la colección
App Services aplica reglas de recopilación para todas las solicitudes GraphQL entrantes, por lo que debe definir al menos un rol de recopilación con los permisos que requiere su aplicación.
Todas las solicitudes GraphQL incluyen un token de autenticación que identifica al usuario de App Services que inició sesión y envió la solicitud. App Services evalúa un rol para cada documento incluido en una operación GraphQL y solo devuelve los campos y documentos que el usuario tiene permiso para ver. Si App Services omite un campo, este tiene un... null valor en el documento devuelto.
2. Definir un esquema para los documentos de la colección
GraphQL requiere que todos los datos se ajusten a un tipo bien definido, por lo que es necesario definir y aplicar un esquema para los documentos de la colección. App Services genera automáticamente tipos y solucionadores GraphQL para los documentos de la colección según el esquema de la colección y regenera nuevos tipos cada vez que este cambia.
Nota
Generar automáticamente un esquema
aplicación Services puede generar un esquema de colección para ti a partir de una muestra de documentos existentes en la colección. Si no tienes datos existentes, puedes insertar un nuevo documento que tenga una implementación simulada de los campos que deseas incluir en tu esquema y luego generar un esquema basado en la maqueta.
3. Define Relationships to Other Collections
Puede definir relaciones que conecten cada documento de la colección con uno o más documentos de una colección externa. Para aprender a definir una relación, consulte Definir una relación.
Relationships allow you to fluently reference and query related documents in GraphQL read and write operations. For example, you can query for a person and include the full document for each of their children from the same people collection:
query { person(query: { name: "Molly Weasley" }) { _id name age picture children { _id name age picture } } }
4. Nombra el tipo de dato
App Services asigna nombres a los tipos GraphQL que genera según el tipo de datos al que se ajustan los documentos de la colección. Puede configurar el nombre de los tipos GraphQL estableciendo el campo title en un esquema con el nombre del tipo de datos que define dicho esquema.
Hay tres situaciones en las que puede establecer el campo title:
Puede definir el nombre del tipo para cada documento en una colección configurando
titleen el nivel raíz del esquema. Si no especifica un título, App Services utiliza el nombre de la colección en su lugar.Puede definir el nombre de tipo para un objeto incrustado configurando
titleen el esquema del objeto incrustado.Puedes definir el nombre del tipo para un campo que tenga una relación definida ajustando
titleen el esquema del campo. App Services utiliza eltitleen lugar del nombre de campo definido al resolver relaciones en GraphQL.
{ "title": "movie", "properties": { "_id": { "bsonType": "objectId" }, "title": { "bsonType": "string" }, "year": { "bsonType": "int" }, "director": { "bsonType": "int" } } }
Nota
Tipos singulares y plurales
aplicación Services genera dos GraphQL queries para cada colección:
Una consulta singular que encuentra un documento específico en la colección. La consulta usa el mismo nombre que el del
titleesquema. Si el del esquematitlees un sustantivo plural, App Services intenta usar su forma singular según lo determine el Reglas de inflexión de Rails ActiveSupport.A plural query that finds a subset of all documents in the collection. If possible, the query uses the plural form of the singular query name. If App Services is unable to pluralize the name or if the pluralized name is the same as the singular name, the plural query uses the same name as the singular query with an additional
"s"appended to the end.
Ejemplo
El siguiente esquema está configurado para la colección laboratory.mice:
{ "title": "Mouse", "bsonType": "object", "properties": { "_id": { "bsonType": "objectId" }, "name": { "bsonType": "string" }, "age": { "bsonType": "int" } } }
App Services genera dos consultas, mouse (singular) y mice (plural), basadas en el esquema:
query Mice { mouse(query: { _id: "5ebe6819197003ddb1f74475" }) { name age } mice { name age } }
Próximos pasos
Una vez que se haya definido un esquema para la colección, App Services expone automáticamente los documentos de la colección a través de la GraphQL API. Ahora puedes conectarte desde una aplicación cliente y ejecutar queries y mutaciones.