Expor Dados em uma Coleção
Nesta página
Visão geral
Você pode expor dados de uma collection MongoDB a aplicação clientes por meio da GraphQL API. O Atlas App Services gera automaticamente tipos e resolvedores do GraphQL com base no esquema da collection e impõe regras da collection para todas as operações do GraphQL.
Procedimento
1. Configurar Funções para a collection
O App Services impõe regras de collection para todas as solicitações GraphQL recebidas, então você precisa definir pelo menos uma role de collection com as permissões que seu aplicativo exige.
Todas as solicitações GraphQL incluem um token de autenticação que identifica o usuário conectado ao App Services que enviou a solicitação. O App Services avalia uma role para cada documento incluído em uma operação GraphQL e retorna apenas campos e documentos que o usuário tem permissão para ver. Se o App Services omitir um campo, o campo terá um valor null
no documento retornado.
2. Definir um esquema para documento na collection
O GraphQL exige que todos os dados estejam em conformidade com um tipo bem definido, portanto, você deve Definir e aplicar um esquema para documentos na coleção. Atlas App Services gera automaticamente tipos e resolvedores doGraphQL para documentos na coleção com base no esquema da coleção e gera novamente novos tipos sempre que o esquema é alterado.
Observação
Gerar um esquema automaticamente
O App Services pode gerar um esquema de collection para você com base em uma amostra de documento existentes na collection. Se você não tiver dados existentes, poderá inserir um novo documento que tenha uma implementação simulada dos campos que deseja incluir em seu esquema e, em seguida, gerar um esquema com base na simulação.
3. Definir relacionamento com outras collection
Você pode definir relacionamentos que conectam cada documento da collection a um ou mais documentos em uma collection externa. Para aprender a definir um relacionamento, consulte Definir um relacionamento.
O relacionamento permite que você faça query e consulte documento relacionados fluentemente nas operações de leitura e gravação do GraphQL. Por exemplo, você pode fazer uma query para uma pessoa e incluir o documento completo para cada um de seus filhos na mesma collection people
:
query { person(query: { name: "Molly Weasley" }) { _id name age picture children { _id name age picture } } }
4. Nomear o tipo de dados
O App Services nomeia os tipos de GraphQL gerados com base no tipo de dados com o qual o documento da collection estão em conformidade. Você pode configurar o nome dos tipos GraphQL definindo o campo title
em um esquema para o nome do tipo de dados que o esquema define.
Há três situações em que você pode definir o campo title
:
Você pode definir o nome do tipo para cada documento em uma collection definindo
title
no nível raiz do esquema. Se você não especificar um título, o App Services usará o nome da collection.Você pode definir o nome do tipo de um objeto incorporado configurando
title
no esquema de objeto incorporado.Você pode definir o nome do tipo para um campo que tem um relacionamento definido configurando
title
no esquema de campo. O App Services usa otitle
em vez do nome do campo definido ao resolver relacionamentos no GraphQL.
{ "title": "movie", "properties": { "_id": { "bsonType": "objectId" }, "title": { "bsonType": "string" }, "year": { "bsonType": "int" }, "director": { "bsonType": "int" } } }
Observação
Tipos singular e plural
O App Services gera duas query GraphQL para cada collection:
Uma consulta singular que encontra um documento específico na coleção. A query usa o mesmo nome que o
title
do esquema. Se o do esquematitle
for um nome plural, o App Services tentará usar sua forma singular conforme determinado pelas regras de inflexão do Rails ActiveSupport.Uma query plural que encontra um subconjunto de todos os documentos na collection. Se possível, a query usa a forma plural do nome singular da query. Se o App Services não conseguir pluralizar o nome ou se o nome pluralizado for igual ao nome singular, a query plural usará o mesmo nome que a query singular com um
"s"
adicional anexado ao final.
Exemplo
O seguinte esquema está configurado para a collection laboratory.mice
:
{ "title": "Mouse", "bsonType": "object", "properties": { "_id": { "bsonType": "objectId" }, "name": { "bsonType": "string" }, "age": { "bsonType": "int" } } }
O App Services gera duas query, mouse
(singular) e mice
(plural), com base no esquema:
query Mice { mouse(query: { _id: "5ebe6819197003ddb1f74475" }) { name age } mice { name age } }
Próximos passos
Depois de definir um esquema para a collection, o App Services expõe automaticamente o documento na collection por meio da GraphQL API. Agora você pode se conectar a partir de uma aplicação cliente e executar query e mutações.