如何在Amplify-CLI中进行服务器端订单/排序查询结果

时间:2019-01-21 11:42:41

标签: amazon-web-services graphql aws-amplify

我正在使用amplify-cli和vue为我的Web应用程序编写一个类似于Facebook墙的函数,并且需要在查询中执行一个简单的服务器端orderby / sort。似乎不可能。

我尝试了标准的graphql方法,添加了排序功能,但这不起作用...

amplify-cli生成的查询:

query ListWallposts(
  $filter: ModelWallpostFilterInput
  $limit: Int
  $nextToken: String
  ) {
  listWallposts(filter: $filter, limit: $limit, nextToken: $nextToken
  ) {
  items {
    id
    content
    createdAt
    comments {
      nextToken
    }
    user {
      id
      firstname
      lastname

    }
  }
  nextToken
  }
}

我的添加物:

query ListWallposts(
   $filter: ModelWallpostFilterInput
   $limit: Int
   $nextToken: String
  ) {
  listWallposts(filter: $filter, limit: $limit, nextToken: $nextToken,sort:{ field:createdAt, order:ASC }
  ) {
  items {
    id
    content
    createdAt
    comments {
      nextToken
    }
    user {
      id
      firstname
    lastname
    }
  }
  nextToken
  }
}

创建ampl-cli表后,我无法将主sortkey添加到dynamoDB。 我花了几天的时间试图弄清楚这个简单的事情……任何帮助都是非常欢迎的。

1 个答案:

答案 0 :(得分:0)

DynamoDB需要全局二级索引。可以将@key转换(或指令)添加到您的schema.graphql文件中,作为现有@model转换的兄弟。

Key Directive Documentation

关于以下定义:

directive @key(fields: [String!]!, name: String, queryField: String) on OBJECT

重要的是,“ fields”参数的第一个元素是分区键(或哈希键)。每个后续元素都是一个排序键。排序键一起确定顺序或返回结果。

(这样做会导致amplify pushQuery类型上创建一个全新的GraphQL字段。queryField的值将是新的字段名称。name参数是全局二级索引名称。)