Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Amplify库的基于DynamoDB GSI的查询_Android_Graphql_Aws Amplify_Aws Appsync_Dynamodb Queries - Fatal编程技术网

Android 使用Amplify库的基于DynamoDB GSI的查询

Android 使用Amplify库的基于DynamoDB GSI的查询,android,graphql,aws-amplify,aws-appsync,dynamodb-queries,Android,Graphql,Aws Amplify,Aws Appsync,Dynamodb Queries,对于Android应用程序,当我使用GSIs时,我使用AppSync客户端从DynamoDB查询数据。现在,我尝试使用Amplify库来利用数据存储功能。阅读文档和代码后,我意识到Amplify库不支持此类查询,除非我弄错了。到目前为止,我发现的唯一方法是使用列表并对结果应用过滤器,但考虑到读取容量,这并不理想。有人找到关于这个问题的文件吗?在这种情况下有没有有用的插件可以使用 有关说明,请参考AWS文件中的以下模式: type Item @model @key(fields: ["orde

对于Android应用程序,当我使用GSIs时,我使用AppSync客户端从DynamoDB查询数据。现在,我尝试使用Amplify库来利用数据存储功能。阅读文档和代码后,我意识到Amplify库不支持此类查询,除非我弄错了。到目前为止,我发现的唯一方法是使用列表并对结果应用过滤器,但考虑到读取容量,这并不理想。有人找到关于这个问题的文件吗?在这种情况下有没有有用的插件可以使用

有关说明,请参考AWS文件中的以下模式:

type Item @model
  @key(fields: ["orderId", "status", "createdAt"])
  @key(name: "ByStatus", fields: ["status", "createdAt"], queryField: "itemsByStatus") {
  orderId: ID!
  status: Status!
  createdAt: AWSDateTime!
  name: String!
}

enum Status {
  DELIVERED
  IN_TRANSIT
  PENDING
  UNKNOWN
}
使用AppSync,您可以通过以下方式基于ByStatus GSI查询数据:

appSyncClient.query(itemsByStatusQuery.builder().build())
现在,我使用的是放大API类别。在我看来,我只能使用
getItem
listItems
查询


我想知道是否有一种方法可以对Amplify库执行同样的操作。

就文档而言,您可以找到有关查询数据存储的信息。如果您还使用API类别,您可以找到查询文档

需要注意的一点是,GSI是基于GraphQL模型创建/使用的。该指令将根据模式中模型之间的关系为您生成GSI。完成此操作后,您可以使用生成的模型发出查询,而无需显式指定GSI


如果您对此有进一步的疑问,很高兴为您提供帮助。

就文档而言,您可以找到有关查询数据存储的信息。如果您还使用API类别,您可以找到查询文档

需要注意的一点是,GSI是基于GraphQL模型创建/使用的。该指令将根据模式中模型之间的关系为您生成GSI。完成此操作后,您可以使用生成的模型发出查询,而无需显式指定GSI


如果您对此有进一步的问题,很高兴为您提供帮助。

谢谢您的澄清。不幸的是,这一特定功能尚未在Amplify中实现。这是我们团队的雷达,但我们现在没有预计到达时间。如果您感兴趣,可以随时跟踪进度


由于听起来您同时配置了API和数据存储类别,因此值得一提的是,您应该能够通过使用
Amplify.DataStore.query
并传递条件(请参阅我之前的响应中的链接)来获得等效的数据集。Amplify有一个同步过程,使本地数据存储与API(在本例中为DynamoDb)保持同步。如果这听起来是一个合适的解决方法,请查看有关同步过程的说明。

感谢您的澄清。不幸的是,这一特定功能尚未在Amplify中实现。这是我们团队的雷达,但我们现在没有预计到达时间。如果您感兴趣,可以随时跟踪进度


由于听起来您同时配置了API和数据存储类别,因此值得一提的是,您应该能够通过使用
Amplify.DataStore.query
并传递条件(请参阅我之前的响应中的链接)来获得等效的数据集。Amplify有一个同步过程,使本地数据存储与API(在本例中为DynamoDb)保持同步。如果这听起来是一个合适的解决方法,请查看有关同步过程的信息。

Raf,感谢您的回答,我提供了更多详细信息来澄清我的问题。我在阅读了你分享的相同文件后问了这个问题。皇家空军,谢谢你的回答,我提供了更多的细节来澄清我的问题。我在阅读了你分享的文件后问了这个问题。