我正在使用 amplify-cli 和 vue 为我的 webapp 编写一个类似于 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。
我花了几天时间试图弄清楚这个简单的事情......任何帮助都会非常受欢迎。
最佳答案
DynamoDB 需要一个全局二级索引。 @key
转换(或指令)可以添加到您的 schema.graphql
文件作为已存在 @model
的同级文件转变。
Key Directive Documentation
关于下面的定义:directive @key(fields: [String!]!, name: String, queryField: String) on OBJECT
重要的是“字段”参数的第一个元素是分区(或哈希)键。每个后续元素都是一个排序键。总之,排序键将决定顺序或返回的结果。
(这样做会导致 amplify push
在 Query
类型上创建一个全新的 GraphQL 字段。queryField
的值将是新的字段名称。name
参数是全局二级索引名称。)
关于amazon-web-services - 如何在 amplify-cli 中服务器端排序/排序查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54289250/