我正在设置一个react-admin应用程序,该应用程序需要使用graphql提供程序与Hasura Service连接。为此,我需要为提供者传递终结点“ / v1 / graphql”和带有选择子字段的查询。像这样:
query MyQuery {
account_customers {
customer_id
email
given_name
}
}
我尝试使用Hasura Provider(https://github.com/hasura/ra-data-hasura/),但申请将转到“ / v1 / query”,但找不到如何更改它。也无法弄清楚如何发送带有子字段的自定义查询。
我还尝试使用ra-data-graphql-simple提供程序来覆盖查询 获得带有子字段的资源。
/providers/myProvider.js
import buildGraphQLProvider,{ buildQuery } from 'ra-data-graphql-simple';
import gql from 'graphql-tag';
const myBuildQuery = introspection => (fetchType,resource,params) => {
const builtQuery = buildQuery(introspection)(fetchType,params);
if (resource === 'account_customers' && fetchType === 'GET_LIST') {
return {
// Use the default query variables and parseResponse
...builtQuery,// Override the query
query: gql`
query ($id: ID!) {
account_customers {
customer_id
email
name
}
}`,};
}
return builtQuery;
}
export default buildGraphQLProvider({ buildQuery: myBuildQuery })
App.js
import buildGraphQLProvider from './providers/myProvider.js';
class App extends Component {
constructor() {
super();
this.state = { dataProvider: null };
}
componentDidmount() {
buildGraphQLProvider({ clientOptions: { uri: 'http://localhost:8080/v1/graphql' }})
.then(dataProvider => this.setState({ dataProvider }));
}
render() {
const { dataProvider } = this.state;
return (
<div classname="App">
<Admin dataProvider={dataProvider} >
<Resource name="account_customers" list={ListGuesser} />
</Admin>
</div>
);
}
}
export default App;
但是我得到了错误:
“未知资源account_customers。请确保已在服务器端架构上声明它。已知资源为”