Menu Docs
Página inicial do Docs
/ /
Serviços Atlas App
/ /

Expor Dados em uma Coleção

Nesta página

  • Visão geral
  • Procedimento
  • 1. Configurar Funções para a collection
  • 2. Definir um esquema para documento na collection
  • 3. Definir relacionamento com outras collection
  • 4. Nomear o tipo de dados
  • Próximos passos

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.

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.

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.

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
}
}
}

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 o title 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 do title esquema. Se o do esquema title 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
}
}

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.

Dica

Veja também:

Voltar

GraphQL API [descontinuado]