GraphQL [Apollo-Android]:两个 `.watcher().enqueueAndWatch` 创建无限刷新循环

GraphQL [Apollo-Android]: two `.watcher().enqueueAndWatch` creating infinite refresh loop

我正在使用 enqueueAndWatch 从我的服务器请求 'posts' 的列表,这导致无限刷新循环。

两个查询如下:

query GetOrganizationPosts {
    user {
        organization {
            posts {
                ...post
            }
        }
    }
}

query GetUserPosts {
    user {
        posts {
            ...post
        }
    }
}

fragment post on Post {
    id
    title
    messsage
}

视图模型已初始化,当我从帖子片段调用 refreshPosts() 时发生无限循环:

init {
    viewModelScope.launch {
            networkClient.apolloClient.
                query(GetOrganizationPostsQuery())
                .watcher().enqueueAndWatch(callback)
            networkClient.apolloClient
                .query(GetUserPostsQuery())
                .watcher().enqueueAndWatch(callback2)
    }
}
fun refreshPosts() {
        networkClient.apolloClient
            .query(GetOrganizationPostsQuery())
            .enqueue(null)
        networkClient.apolloClient
            .query(GetUserPostsQuery())
            .enqueue(null)
}

提前致谢!

Apollo-Android 拉取请求中描述的解决方法:https://github.com/apollographql/apollo-android/issues/2226

.responseFetcher(ApolloResponseFetchers.CACHE_ONLY) 添加到任何 enqueueAndWatch 调用。这可确保观察者在更新缓存时不会执行网络请求。