Как использовать Apollo GraphQl (реагировать) в функции JS в реагировать родной? - PullRequest
0 голосов
/ 26 апреля 2018

Вот так выглядит моя простая функция для синхронизации данных:

Функция

import { getData } from './api/index'

export default async function synchronize (navigator) {
  const data = await getData()
  // ... then store data to local db...
}

Я получаю некоторые данные с сервера, используя RESTful API:

GetData

import { Alert, AsyncStorage } from 'react-native'

async function getData () {
  try {
    const lastSynched = await AsyncStorage.getItem('data.lastSynched')
    const date = lastSynched ? Number(Date.parse(lastSynched)) / 1000 : 0
    const token = await AsyncStorage.getItem('auth.token')
    const uriBase = 'http://localhost:3000'

    let response = await fetch(`${uriBase}/get-data/${date}`, {
      method: 'GET',
      headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json',
        'x-access-token': token
      }
    })
    let responseJson = await response.json()
    return responseJson
  } catch (error) {
    Alert.alert('Error', 'Could not synchronize data')
  }
}

export default getData

Но сейчас я использую apollo graphQL и не понимаю, как получить данные с помощью запроса, так как я использую здесь функцию (synchronize ()), а не компонент.

1 Ответ

0 голосов
/ 27 апреля 2018

Я думаю, что хорошее начало будет с этой ссылки . Вот несколько примеров того, как использовать клиент Apollo для выполнения запросов и выборки данных.

Возможно, я не правильно понимаю, в чем проблема, но здесь высокий уровень использования Apollo.

Сначала вам нужно будет создать клиент Apollo и предоставить как минимум URI для конечной точки GraphQL.

import ApolloClient from "apollo-boost";

const client = new ApolloClient({
  uri: "https://w5xlvm3vzz.lp.gql.zone/graphql"
});

После того, как вы создали клиент, вам следует выполнить запрос с ранее созданным клиентом, как показано ниже:

import gql from "graphql-tag";

client
  .query({
    query: gql`
      {
        rates(currency: "USD") {
          currency
        }
      }
    `
  })
  .then(result => console.log(result));

Убедитесь, что вы установили apollo-boost react-apollo graphql-tag graphql пакеты. Также убедитесь, что вы поместили свой запрос в тег GraphQL следующим образом, поскольку он скомпилирует ваш запрос.

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