我正在使用GraphQL + Apollo Client + Join Monster开发离线优先的Expo/React Native应用程序,并将数据存储在sqlite数据库客户端。Apollo客户端自定义网络界面在离线/在线时进行不同的gql查询?
我的模式(和其他代码)看起来非常类似于这个https://github.com/tslater/reactnative-relay-offline/blob/master/graphql/relay-schema/index.js,除了代替使用中继,我使用Apollo客户端作为我的GraphQL客户端。
我有一个自定义的NetworkInterface看起来像:
import schema from './graphql/relay-schema'
class LocalNetworkInterface implements NetworkInterface {
constructor(schema) {
this.schema = schema
}
query(request) {
const { query, variables } = request
return graphql(
this.schema,
printAST(query),
null,
null,
variables,
)
}
getSchema() {
return this.schema
}
}
export function createLocalNetworkInterface(options) {
const { schema } = options
return new LocalNetworkInterface(schema)
}
const networkInterface = createLocalNetworkInterface({ schema })
const client = new ApolloClient({networkInterface})
,这非常适用于离线查询。
但是,我不确定如何适应这种情况,以便能够在应用程序检测到它具有Internet连接时对真实服务器进行查询。我对服务器发出的gql查询与我在本地数据库中发出的问题略有不同,如果这很重要的话。是https://github.com/apollographql/apollo-link在这里会有帮助吗?