Я настраиваю приложение реакции-администратора, которое должно подключаться к сервису Hasura с помощью провайдера graphql. Для этого мне нужно передать провайдеру конечную точку "/ v1 / graphql" и запрос с подполями selects. Например:
query MyQuery {
account_customers {
customer_id
email
given_name
}
}
Я пытался использовать провайдер Hasura (https://github.com/hasura/ra-data-hasura/), но заявки собирались в "/ v1 / query", и я не мог найти, как это изменить. Также не могу понять, как отправить мой пользовательский запрос с подполями.
Я также попытался использовать ra-data-graphql-simple, чтобы переопределить запрос для получения ресурса с подполями.
/ provider / 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, resource, 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. Убедитесь, что он был объявлен в вашей схеме на стороне сервера. Известные ресурсы: "