Sorting GraphQL:基于用户属性的排序查询
我刚刚在iOS应用程序中使用AWS Amplify、DynamoDB和GraphQL实现了分页。我想做的是根据用户的得分从高到低进行查询。为了做到这一点,我需要在打电话时对查询进行排序。如何根据用户的分数进行排序查询 下面是我的用户表Sorting GraphQL:基于用户属性的排序查询,sorting,graphql,amazon-dynamodb,aws-amplify,aws-appsync,Sorting,Graphql,Amazon Dynamodb,Aws Amplify,Aws Appsync,我刚刚在iOS应用程序中使用AWS Amplify、DynamoDB和GraphQL实现了分页。我想做的是根据用户的得分从高到低进行查询。为了做到这一点,我需要在打电话时对查询进行排序。如何根据用户的分数进行排序查询 下面是我的用户表 type User @model @key(fields: ["username"]) { name: String email: String! username: String! dateOfBirth: String university
type User @model @key(fields: ["username"]) {
name: String
email: String!
username: String!
dateOfBirth: String
university: String!
phoneNumber: String!
biography: String
score: Int!
deviceToken: String
endpointArn: String
}
这是索引的一个用例 关于如何实现该数据访问模式,当您使用
@key
指令时,Amplify会为您创建一个全局二级索引。在这种情况下,由于您只对高分感兴趣,您可以通过将以下指令添加到您的用户模型中,在“分数”字段上创建另一个GSI:
@key(名称:“UsersByScore”,字段:[“用户名”,“分数”],查询字段:“UsersByScore”)
然后,使用指定的限制
n
和排序方向,使用Amplify生成的UsersByScore查询来查询得分最高(或最低)的n
用户 谢谢你的回答。OP是否可以尝试一下,因为它应该可以实现他们想要的。Hi@mparis我在Amplify CLI和SDK Github问题页面上处于活动状态。任何有Amplify查询的人都应该检查这些问题页面(或者有人应该把它作为一个项目,通过Github解决问题,然后再通过StackOverflow回答)@jkeys,我认为你的回答有问题:首先,字段应该是[“用户名”,“分数”]。其次,使用您建议的amplify将引发一个错误:无效的@key“UsersByScore”。如果“字段”中的第一个字段与主@key相同,则不能创建@key,除非主@key有多个“字段”。如果主索引中没有排序键,则不能有本地辅助索引。
@Valerio关于语法错误的说法是正确的。但我不知道GraphQL transformer不支持向新索引添加排序字段。@jkeys我在amplify cli repo中提出了一个问题,以解决此特定情况。我偶然发现了你的答案,因为我在寻找这个确切的问题。