我正试图通过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。
我想知道以下内容:
我真的希望如此,因为这件事看起来很酷!
答案 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`;
},
...
};
CREATE
、GET_ONE
、GET_MANY
、GET_MANY_REFERENCE
、UPDATE
和 DELETE
相同。
您可以找到一个很好的自定义内省示例 here