Docs 菜单
Docs 主页
/ /
Atlas App Services
/ /

公开集合中的数据

在此页面上

  • Overview
  • 步骤
  • 1. 为collection配置角色
  • 2. 为collection中的文档定义模式
  • 3. 定义与其他collection的关系
  • 4. 命名数据类型
  • 后续步骤

您可以通过 Atlas GraphQL API 将 MongoDB collection中的数据公开给应用程序。Atlas App Services 根据collection模式自动生成 GraphQL 类型和解析程序,并为所有 GraphQL 操作强制执行collection规则

App Services 会对所有传入的 GraphQL 请求实施collection规则,因此您需要至少定义一个collection角色,并赋予应用程序所需的权限。

所有 GraphQL 请求都包含一个身份验证令牌,用于标识发送请求的 App Services 登录用户。 App Services 会评估 GraphQL 操作中包含的每个文档的角色,并仅返回用户有权查看的字段和文档。如果 App Services 省略了某个字段,则该字段在返回的文档中具有 null值。

GraphQL 要求所有数据都符合定义明确的类型,因此您必须为集合中的文档定义和实施模式。 Atlas App Services会根据集合模式自动为集合中的文档生成GraphQL类型和解析程序,并在模式发生更改时重新生成新类型。

注意

自动生成模式

App Services 可以根据集合中现有文档的示例为您生成集合架构。如果您没有现有数据,则可以插入一个新文档,该文档具有您想要包含在架构中的字段的模拟实现,然后根据该模拟生成架构。

您可以定义关系,将collection中的每个文档与外部collection中的一个或多个文档连接起来。要了解如何定义关系,请参阅定义关系。

关系允许您在 GraphQL 读写操作中流畅地引用和查询相关文档。 例如,您可以查询人员,并包含来自同一peoplecollection的每个子文档的完整文档:

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

App Services 根据collection中的文档符合的数据类型来命名生成的 GraphQL 类型。您可以通过将模式中的title字段设置为模式定义的数据类型的名称来配置 GraphQL 类型的名称。

您可以在三种情况下设置title字段:

  • 您可以通过在模式的根级别设置title来定义collection中每个文档的类型名称。如果未指定标题,App Services 将使用collection的名称。

  • 您可以通过在嵌入式对象模式中设置title来定义嵌入式对象的类型名称。

  • 您可以通过在字段模式中设置title来为具有已定义关系的字段定义类型名称。 App Services 在解析 GraphQL 中的关系时使用title而不是定义的字段名称。

{
"title": "movie",
"properties": {
"_id": { "bsonType": "objectId" },
"title": { "bsonType": "string" },
"year": { "bsonType": "int" },
"director": { "bsonType": "int" }
}
}

注意

单数和复数类型

App Services 为每个集合生成两个GraphQL 查询

  • 在集合中查找特定文档的单一查询。 查询使用与模式的title相同的名称。 如果模式的title 是复数名词, App Services将尝试使用由 Rails ActiveSupport 词形变化规则确定的单数形式。

  • 一个复数查询,用于查找collection中所有文档的子集。如果可能,该查询将使用单数查询名称的复数形式。 如果 App Services 无法将名称复数化,或者如果复数名称与单数名称相同,则复数查询将使用与单数查询相同的名称,并在末尾附加"s"

例子

laboratory.micecollection配置了以下模式:

{
"title": "Mouse",
"bsonType": "object",
"properties": {
"_id": { "bsonType": "objectId" },
"name": { "bsonType": "string" },
"age": { "bsonType": "int" }
}
}

App Services 根据以下模式生成两个查询: mouse (单数)和mice (复数):

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

为集合定义架构后,App Services 会通过 GraphQL API 自动公开集合中的文档。现在,您可以从客户端应用程序进行连接,并执行查询和更改。

提示

另请参阅:

后退

GraphQL API [已弃用]