フィルタと制限されたGraphSQLの制限
背景
データベースはDynamoDBによってホストされ、データを操作するためにMulticify Graphqlを使用しています.
アプリケーションのすべてのユーザーの情報が含まれているテーブルがあります.各ユーザはユーザグループに属し、ユーザーはグループのデータをCRUDすることができるだけでよいので、
filter
リストクエリのパラメータ.また、NextTokenを使ってリストテーブルビューにページ化機能を実装しようとしました.私は一定の量のデータを得ることを期待していた
limit
リストクエリのパラメータ.何が起こったの
両方を指定する場合
filter
and limit
, DynamoDBは最初に指定されたデータ量を得るlimit
そして、これらのデータをフィルタリングして、フィルタリングされた応答をスローします.これは、応答データが以下で指定された値以下であることを示しますlimit
パラメータ問題の扱い方
まずスキーマのテーブル定義を変更しました.以下の通り.
から:
type Post
@model
{
id: ID!
userGroupId: ID!
author: String!
title: String!
content: String!
createdAt: AWSDateTime!
}
type UserGroup @model {
id: ID!
name: String!
posts: [Post] @connnection (keyName: "byUserGroup", fields: ["id"]
}
です.type Post @model
@key ( name: "byUserGroup", fields: ["userGroupId", "createdAt"], queryField: "listPostsByUserGroups")
{
id: ID!
userGroupId: ID!
author: String!
title: String!
content: String!
createdAt: AWSDateTime!
}
type UserGroup @model {
id: ID!
name: String!
posts: [Post] @connnection (keyName: "byUserGroup", fields: ["id"]
}
私がしたすべては@キー部を加えていました.の最初のパラメータfields
パーティションキー、2番目のソートキーです.DynamoDBはパーティションキーで定義された分離パーティションにデータを保存します.ソートキーが定義されている場合、ソートキーでソートされた各パーティションにデータが保存されます.
表スキーマを再定義した後、使用できるようになります
listPostsByUserGroups
, で指定された名前queryField
その他listPosts
. クエリ名を指定できますqueryField
.query {
listPostsByUserGroups (userGroupId: xxxxx, sortDirection: 'DESC', limit: 10) {
items {
author
title
content
createdAt
}
nextToken
}
}
新しいものを使ってlistPostsByUserGroups
クエリでは、常にfilter
最後まで続くパラメータ.結論
DynamoDbの動作は、Meginify Graphqlの初心者としてはとても難しかったです.私はまだ2つ以上の列でフィルタをしなければならない場合にこれを行う方法を知らない.例えば、私はAを計画していた
deletedAt
論理的な削除のための列とそれをフィルタします.私は自分の研究からは不可能だと結論しました.しかし、このコミュニティの誰もがこれについて解決策を持っているかどうか知りたいです.また、Graphqlでページ付けを処理する方法を探している場合は、次の投稿は参考になります.
AWS AppSyncによるペグネーションの実装
ブライス・ペル・ 5月18日・ 5分読む
#aws
#appsync
#amplify
Reference
この問題について(フィルタと制限されたGraphSQLの制限), 我々は、より多くの情報をここで見つけました https://dev.to/mep/filter-and-limit-on-amplify-graphql-hosted-by-dynamodb-ooiテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol