【问题标题】:How to serverside order/sort query results in amplify-cli如何在 amplify-cli 中对查询结果进行服务器端排序/排序
【发布时间】:2019-06-14 19:13:03
【问题描述】:

我正在使用 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
  }
}

在创建 amplify-cli 表后,我无法将主排序键添加到 dynamoDB。 我花了几天时间试图弄清楚这个简单的事情......任何帮助都会非常受欢迎。

【问题讨论】:

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


    【解决方案1】:

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

    Key Directive Documentation

    关于下面的定义:

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

    重要的是“字段”参数的第一个元素是分区(或哈希)键。每个后续元素都是一个排序键。排序键将共同决定顺序或返回结果。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-21
      • 1970-01-01
      • 1970-01-01
      • 2011-11-08
      • 2012-07-14
      • 1970-01-01
      相关资源
      最近更新 更多