【发布时间】:2019-08-03 14:13:16
【问题描述】:
我有一个由 Amplify 从基本架构生成的 Appsync API。在Article 模型上,category 字段嵌套在metadata 字段中。我想构建一个查询,提供按类别过滤的文章列表。我不清楚如何过滤嵌套值...我见过similar questions,但类似的答案没有奏效。
AWS GraphQL 转换架构
type Article @model {
id: ID!
title: String!
description: String!
text: String!
metadata: ArticleMetadata!
}
type ArticleMetadata {
category: Category!
lastModified: String!
creationDate: String!
}
enum Category {
javascript
java
ruby
python
haskell
}
生成的列表查询
export const listArticles = `query ListArticles(
$filter: ModelArticleFilterInput
$limit: Int
$nextToken: String
) {
listArticles(filter: $filter, limit: $limit, nextToken: $nextToken) {
items {
id
title
description
text
metadata {
category
lastModified
creationDate
}
}
nextToken
}
}
`;
过滤查询失败
query listArticlesByCategory($category: String!) {
listArticles(filter: {category: {eq: $category}}) {
items {
title
description
text
metadata {
category
creationDate
lastModified
}
}
}
}
Appsync 控制台错误指出filter: {category: ... } 中的category 是未知字段。
【问题讨论】:
-
看起来您正在生成由 DynamoDB 表支持的数据类型,该表没有可用的过滤器参数。尝试查看@searchable 指令
-
它由 DynamoDB 支持,但
list操作的自动生成代码包括$filter: ModelArticleFilterInput。检查ModelArticleFilterInput发现metadata不包括在内。不知道为什么只能过滤顶级字段。
标签: graphql aws-appsync aws-amplify