我正在使用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。 我花了几天的时间试图弄清楚这个简单的事情……任何帮助都是非常欢迎的。
答案 0 :(得分:0)
DynamoDB需要全局二级索引。可以将@key
转换(或指令)添加到您的schema.graphql
文件中,作为现有@model
转换的兄弟。
关于以下定义:
directive @key(fields: [String!]!, name: String, queryField: String) on OBJECT
重要的是,“ fields”参数的第一个元素是分区键(或哈希键)。每个后续元素都是一个排序键。排序键一起确定顺序或返回结果。
(这样做会导致amplify push
在Query
类型上创建一个全新的GraphQL字段。queryField
的值将是新的字段名称。name
参数是全局二级索引名称。)