みやたくワークスの徒然ブログ

みやたくワークスの徒然ブログ

PR

×

Profile

たくぷれっさ2号機

たくぷれっさ2号機

Calendar

Archives

2026.05
2026.04
2026.03
2026.02
2026.01
2020.11.19
XML
カテゴリ: GraphQL
schema.graphqlに以下のような定義をしていました。

パーティションキーに「circuitID」を指定しており、特にソートキーは指定していません。
type TMGPSCourse @model @key(fields: ["circuitID"]) {
circuitID: String!
circuitName: String!
isCircuit: Boolean!
userEntry: Boolean!
sectorCount: String!
ldel_Flg: Boolean!
ldel_Date: String!
}

このテーブルの内容を、何の条件もつけずにList形式でデータ取得すると、取得順序は保証されません。

なので「sortDirectio」で、パーティションキーの昇順で取得しようと思って以下のようにプログラムしたのですが、取得結果が0件になりました。

// データベースを検索する

// 全件取得する

appDelegate. appSyncClient fetch (query: ListTmgpsCoursesQuery (circuitID: nil ,
 filter: nil ,
 limit: nil ,
 nextToken: nil ,
 sortDirection: sort)) {(result, error) in

 〜省略〜

}


ソートキーをつけていないせいかな、と思ったのですが、どうもそんなに簡単な話でもなかったようです。

ソートキーは、あくまで同一パーティションキー内での並び順の指定であるようで、前述のようにパーティションキーを未指定の状態でソート順を指定すると、正しくレコードが取得できません。(結果が0件になる)

↓↓のようにテーブルを作り直しても結果は変わりませんでした。

# コース一覧テーブル
​​type TMGPSCourse @model @key(fields: ["circuitID" ,"​circuitName​" ]) {​​
circuitID: String!
circuitName: String!
isCircuit: Boolean!
userEntry: Boolean!
sectorCount: String!
ldel_Flg: Boolean!
ldel_Date: String!
}

結局、プログラム側で、Arrayをソートして解決しました。

ちょっと処理方法が強引なのでデータ量が増えてきたときに整合性が取れなくなりそうなので、改善必要。

ハマり時間 1h





お気に入りの記事を「いいね!」で応援しよう

Last updated  2020.11.19 17:15:45
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: