Android 使用Amplify库的基于DynamoDB GSI的查询
对于Android应用程序,当我使用GSIs时,我使用AppSync客户端从DynamoDB查询数据。现在,我尝试使用Amplify库来利用数据存储功能。阅读文档和代码后,我意识到Amplify库不支持此类查询,除非我弄错了。到目前为止,我发现的唯一方法是使用列表并对结果应用过滤器,但考虑到读取容量,这并不理想。有人找到关于这个问题的文件吗?在这种情况下有没有有用的插件可以使用 有关说明,请参考AWS文件中的以下模式: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
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,感谢您的回答,我提供了更多详细信息来澄清我的问题。我在阅读了你分享的相同文件后问了这个问题。皇家空军,谢谢你的回答,我提供了更多的细节来澄清我的问题。我在阅读了你分享的文件后问了这个问题。