Docs Menu
Docs Home
/ /
API de GraphQL

Exponer datos en una colección

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.

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.

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

App Services puede generar un esquema de colección basado en una muestra de documentos existentes en la colección. Si no dispone de datos, puede insertar un nuevo documento con una implementación simulada de los campos que desea incluir en su esquema y, a continuación, generar un esquema basado en la simulación.

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.

Las relaciones permiten referenciar y consultar con fluidez documentos relacionados en operaciones de lectura y escritura de GraphQL. Por ejemplo, se puede consultar una persona e incluir el documento completo de cada uno de sus hijos de la misma colección people:

query {
person(query: { name: "Molly Weasley" }) {
_id
name
age
picture
children {
_id
name
age
picture
}
}
}

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 puedes configurar el campo title:

  • Puede definir el nombre del tipo para cada documento en una colección configurando title en 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 title en el esquema del objeto incrustado.

  • Puedes definir el nombre del tipo para un campo que tenga una relación definida ajustando title en el esquema del campo. App Services utiliza el title en 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 title esquema. Si el del esquema title es un sustantivo plural, App Services intenta usar su forma singular según lo determine el Reglas de inflexión de Rails ActiveSupport.

  • Una consulta en plural que busca un subconjunto de todos los documentos de la colección. Si es posible, la consulta utiliza la forma plural del nombre de la consulta en singular. Si App Services no puede pluralizar el nombre o si el nombre en plural coincide con el nombre en singular, la consulta en plural utiliza el mismo nombre que la consulta en singular con un adicional "s" al final.

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), según el esquema:

query Mice {
mouse(query: { _id: "5ebe6819197003ddb1f74475" }) {
name
age
}
mice {
name
age
}
}

Una vez definido un esquema para la colección, App Services expone automáticamente los documentos de la colección mediante la API GraphQL. Ahora puede conectarse desde una aplicación cliente y ejecutar consultas y mutaciones.

Tip

Volver

API de GraphQL

En esta página