Как настроить конечную точку и пользовательский запрос graphql в React-Admin - PullRequest
1 голос
/ 05 ноября 2019

Я настраиваю приложение реакции-администратора, которое должно подключаться к сервису 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. Убедитесь, что он был объявлен в вашей схеме на стороне сервера. Известные ресурсы: "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...