Admin on Rest graphql客户端返回空资源

时间:2018-02-27 18:26:39

标签: graphql admin-on-rest

我正试图通过graphql客户端来处理休息管理员。我在启动板上使用'aor-graphql-client-graphcool'和端点。 调试应用程序会显示分配给资源键的零长度数组。类型/查询看起来不错,所以我认为内省工作正常。

introspectionResults {types: Array(39), queries: Array(9), resources: Array(0)}

我已经实现了getPageOf [Resource]并在我的端点中获取[Resource]查询,但是如果我需要做更多的事情,那么在文档中就不清楚了。

我正在初始化next.js react组件中的客户端,如文档中所示:

componentDidMount() {
  buildApolloClient({
    clientOptions: {
      uri: 'https://xxxxxxxxx.lp.gql.zone/graphql'
    }
  }).then((restClient) => {
    this.setState({ restClient });
  });
}

我还尝试禁用内省并传入自定义查询,但在这种情况下,我得到了introspectionResults的null。

我想知道以下内容:

  • 启动板是否与graphcool客户端兼容?
  • 在我的客户端初始化中,我是否需要更多配置才能获得填充的资源。
  • 管理员是否可以使用它声称的银弹,即可以通过内省查询解析我的架构并显示数据。

我真的希望如此,因为这件事看起来很酷!

2 个答案:

答案 0 :(得分:1)

您需要内省或schema.js文件,以使用graphql server的可用资源和类型初始化admin-on-rest(aor)。 AOR做了很多,但由于graphql正在发展,并且没有标准化所有内容(例如预期变量或它们的命名约定),你将不得不调整graphql的简单数据提供程序(参见graphql的examples / demo)或编写自己的。

我是如何开始的:如果您刚刚开始使用新的graphql server / schema,那么请将您自己的示例基于examples / demo(如AOR doc中所述)。一定要使用" next"存储库的分支。首先逐步执行将从您的示例中调用的ra-data-graphql / src / index.js和ra-data-graphql-simple / src / index.js。这将显示内省结果与默认/简单dataProvider不匹配的位置。

答案 1 :(得分:0)

如果您的内省返回一个空的 resources,您将主要需要为您的内省功能提供一个适配器。

默认情况下,react-admin 期待特定的架构形状(更多详细信息 here

例如,对于 Post 资源,您应该使用 allPosts 查询来获取 Post 的列表

type Query {
  Post(id: ID!): Post
  allPosts(page: Int, perPage: Int, sortField: String, sortOrder: String, filter: PostFilter): [Post]
  _allPostsMeta(page: Int, perPage: Int, sortField: String, sortOrder: String, filter: PostFilter): ListMetadata
}

如果在您的后端,您有 allPosts 而不是 postList,例如,您可以使用自省选项将 allPosts 映射到 postList

export const introspectionOperationNames = {
    //schema,
    [GET_LIST]: resource => {
        return `${inflection.camelize(resource.name, true)}List`;
    },
    ...
};

CREATEGET_ONEGET_MANYGET_MANY_REFERENCEUPDATEDELETE 相同。

您可以找到一个很好的自定义内省示例 here