首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用GraphQL将数据存储在阿波罗缓存中?

如何使用GraphQL将数据存储在阿波罗缓存中?
EN

Stack Overflow用户
提问于 2019-10-31 12:06:54
回答 1查看 483关注 0票数 0

我使用GraphQL来同步aws中的数据,dynamoDB中使用AppSync。

但是现在我需要存储从GraphQL API中获得的数据。

我发现,可以使用阿波罗客户机将这些数据存储在缓存中,以便能够在脱机模式下使用这些数据。

下面是我使用GraphQL的代码:

代码语言:javascript
复制
amazonAppSyncClient = new AmazonAppSyncClient ("ACCESS_KEY_ID", "SECRET_ACCESS_KEY", REGION);
graphQLClient = new GraphQLClient ("https://6vl6q5h2c5bxrbmlimiia5hldy.appsync-api.us-west-2.amazonaws.com/graphql",
    new GraphQLClientOptions {
        HttpMessageHandler = new AWS4SignerMessageHandler (
            amazonAppSyncClient,
            "ACCESS_KEY_ID",
            "SECRET_ACCESS_KEY")
    });

public async Task<List<Book>> GetAllBooks () {
    var graphQLResponse = await graphQLClient.PostQueryAsync (@"query getBooks {
      listBooks {
      items {
      Id
      Title
      ISBN
      Price
      PageCount
      Author}}}");

    var json = graphQLResponse.Data;
    var value = json.GetValue ("listBooks").GetValue ("items");
    List<Book> books = value.ToObject<List<Book>> ();
    return books;
}

我在这里使用了以下代码:https://gist.github.com/NeilBostrom/cab8b9275e39bb90ecf8e06ab980664b

如何使用阿波罗在本地保存返回的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-31 13:23:43

如果您想使用AppSync/阿波罗和Xamarin在移动平台上实现适当的离线缓存,那么您需要做大量的工作。首先,阿波罗是安卓和iOS的最初缓存iOS客户端,亚马逊AppSync SDK库就是基于这些。他们只是在上面构建了一些特定于亚马逊的功能。

问题是,尽管iOS和Android都存在库,但它们不能像Xamarin那样使用,需要创建一个单独的绑定项目,以便您可以在特定于Xamarin的C#代码中调用库。

下面是你需要做的事情:

  1. 创建一个Xamarin.iOS绑定项目来创建AppSync iOS SDK的C#绑定,并遵循这篇文章如何使其工作。关于Microsoft也有相当详细的信息,但是它是针对Objective代码的,所以您需要注意一些不同之处。
  2. 创建一个Xamarin.Android Java绑定库来创建AppSync安卓SDK的C#绑定。请遵循Microsoft上的这篇文章,以获得有关如何执行此操作的指导。
  3. 现在,您可以在Xamarin.iOS和Xamarin.Android上使用相关的库了。如果我没有弄错的话,AppSync库会自动将数据缓存在磁盘上,因此您甚至不需要在您的身边做任何事情。无论如何,在这一点上,我可以写一篇三页的文章,介绍如何实现什么,但是如果您到了这一点,最好遵循我上面链接到的AppSync iOS和Android存储库的指导和教程。

编辑:如果上面看起来工作太多,可以考虑其他选项:

  • 尝试为阿波罗iOS阿波罗安卓创建绑定,并尝试以这种方式实现缓存。无论如何,AppSync SDK在内部使用它们(如下图所示),因此它们应该适合于任务。

https://aws-amplify.github.io/docs/android/api

  • 如果您没有绑定到Amazon平台,那么还有其他几个图QL数据库和提供者可能对Xamarin有更好的支持。
  • GraphQL响应是纯JSON。如果您不需要复杂的增量处理等,您可以自己为它构建一个缓存机制。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58643030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档