PR
Calendar
次にテーブルにあるデータを全件取得する場合は、List テーブル名
sListQueryを使用します。
キーを何も指定しなければ全件取得できます。
// groupNameでデータベースを検索する
appDelegate. appSyncClient
?. fetch
( ListTmgpsGroupUserListsQuery
())
最後に、ソートキーを指定せず、特定のパーティションキーのデータを全件取得する場合ですが、List テーブル名
sListQueryを使用するのは変わらず、パーティションキーだけを指定し、他の引数は全てnilにするだけです。
// groupNameでデータベースを検索する
appDelegate. appSyncClient ?. fetch (query: ListTmgpsGroupUserListsQuery (
groupName:appDelegate. GroupData . groupName ,
userID: nil ,
filter: nil ,
limit: nil ,
nextToken: nil ,
sortDirection: nil
)
これにめっちゃはまり時間を浪費しました。
API.swift 上、 ListTmgpsGroupUserListsQuery
のイニシャライザは以下の通り定義されています。
public
init
(
groupName: String
? = nil
,
userID: ModelStringKeyConditionInput
? = nil
,
filter: ModelTMGPSGroupUserListFilterInput
? = nil
,
limit: Int
? = nil
,
nextToken: String
? = nil
,
sortDirection: ModelSortDirection
? = nil
)
{
self . groupName = groupName
self . userID = userID
self . filter = filter
self . limit = limit
self . nextToken = nextToken
self . sortDirection = sortDirection
}
引数を省略したら 自動的に nil を与えるよ、っていう定義です。
上記の2つ目のケースは、引数を1つも与えないことで、暗黙的に引数にnilが与えられることによってパーティションキー、ソートキーの指定がされずに全件データを取得しているのです。
つまり、、、パーティションキーだけ値をセットして、他の引数は全て明示的にnilを与えてあげればそれでよかったのです。
これに気づかずにどはまりしました。
ちなみに、ソートキーは以下のようになっています。
input ModelStringKeyConditionInput { eq: String le: String lt: String ge: String gt: String between: [String] beginsWith: String}
いまいち使い方が理解できていませんが、論理演算で該当するレコードだけが取得できそうです。
その他、取得件数の制限や、フィルター、ソート順の指定(昇順、降順)ができそうです。
今のところ、ソートしかちゃんと使いこなしていないです。
ハマり時間 4時間。。。
なんか、Safariのせいなのか、楽天ブログのせいか分かりませんが、文字を変換途中に勝手に変換終了しやがってうざい。
見たまま編集 off たらなおったのでブログのせいかな。
List形式でデータ取得時にソートができない 2020.11.19
GraphQLの並走はやめよう 2020.10.29
amplify push 時のエラー 2020.10.27