기본 스키마에서 Amplify가 생성 한 Appsync API가 있습니다. 온 Article
모델하는 category
필드가 중첩되는 metadata
분야. 카테고리별로 필터링 된 기사 목록을 제공하는 쿼리를 작성하고 싶습니다. 중첩 된 값을 필터링하는 방법이 명확하지 않습니다. 비슷한 질문을 보았지만 유사한 대답이 작동하지 않았습니다.
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 콘솔 오류는 category
in filter: {category: ... }
이 알 수없는 필드 임을 나타냅니다 .
기본적으로 Amplify codegen은 최상위 필터에서만 작동합니다. 이를 확장하여 ArticleMetadata에 중첩 된 속성에 대한 필터를 포함 할 수 있습니다.
ModelArticleFilterInput
카테고리 필드를 포함하도록 유형 을 보강해야 합니다. 아티클 테이블의 메타 데이터 필드가 DynamoDB 맵에서 지원된다고 가정하면 맵 값을 기준으로 필터링 할 수 있습니다. metadata.category = :category
필터 인수에 카테고리 값이있을 때 와 같은 것을 포함하는 필터 표현식을 추가하려면 listArticles 리졸버의 요청 매핑 템플릿 VTL을 수정해야합니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다