Вот так выглядит моя простая функция для синхронизации данных:
Функция
import { getData } from './api/index'
export default async function synchronize (navigator) {
const data = await getData()
// ... then store data to local db...
}
Я получаю данные с сервера с помощью RESTful API:
получить данные
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 ()), а не компонент.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Думаю, хорошее начало будет с этого ссылка на сайт. Здесь у вас есть хорошие примеры использования клиента 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.info(result));
Убедитесь, что вы установили пакеты apollo-boost react-apollo graphql-tag graphql. Также убедитесь, что вы заключили свой запрос в тег GraphQL, как это, потому что он скомпилирует ваш запрос.
Здесь вы не используете apollo. Вы пытаетесь выполнить запрос.