Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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
Sorting GraphQL:基于用户属性的排序查询_Sorting_Graphql_Amazon Dynamodb_Aws Amplify_Aws Appsync - Fatal编程技术网

Sorting 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

我刚刚在iOS应用程序中使用AWS Amplify、DynamoDB和GraphQL实现了分页。我想做的是根据用户的得分从高到低进行查询。为了做到这一点,我需要在打电话时对查询进行排序。如何根据用户的分数进行排序查询

下面是我的用户表

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中提出了一个问题,以解决此特定情况。我偶然发现了你的答案,因为我在寻找这个确切的问题。