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

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

PR

×

Profile

たくぷれっさ2号機

たくぷれっさ2号機

Calendar

Archives

2026.05
2026.04
2026.03
2026.02
2026.01
2020.10.29
XML
カテゴリ: GraphQL
ユーザーと、1人以上のユーザーグループを作って簡易的なグループチャット的な機能を作っていました。

同一グループに所属するユーザー情報の一覧をデータベースから取得する際、ユーザー情報を全件取得して、同一グループのユーザーであるかを選別していたのですが、ユーザーの増加につれ取得件数が増加すること※と、ユーザー情報にパスワードも含んでいることから極力取得する情報を限定的にするために、グループ名をパーティションキーとしたユーザー一覧テーブルを作りました。
※利用者が、友人枠をつかっても両手で数えたりそうなため不要な心配ですが・・・

そこで、ユーザー一覧テーブルに対して

所属するグループを変更した場合は過去に所属していたグループから自分の情報を削除する

グループオーナーが新しいグループを作った場合は、グループに所属する全員の情報を削除する

などの処理を作っていました。

ただ、これが削除処理を呼び出しているのにうまく削除されず。
デバッグしていてもperformを呼び出しているにも関わらず、その後の処理が実行されていませんでした。

appDelegate. appSyncClient ?. perform (mutation: DeleteTmgpsGroupUserListMutation (input:mutationInput), resultHandler:  { (result, error) in

if let error = error as ? AWSAppSyncClientError {

self . errorCode = TMGPSDBProcess . DBERROR_ACCESS_ERROR

self . errorMessage = error. localizedDescription

}

if let resultError = result?. errors {

self . errorCode = TMGPSDBProcess . DBERROR_USERLISTDELETE_ERROR

for error in resultError {

self . errorMessage ! += "エラーコード:" + String (error. errorDescription !)

self . errorMessage ! += "\nエラー詳細:" + error. message + "\n"

}

}

if ( self . errorCode == TMGPSDBProcess . DBERROR_NO_ERROR ) {

// エラーが起きていない場合

self . statusCode = TMGPSDBProcess . DBERROR_USERLISTDELETE_NORMALEND

self . errorMessage = DBErrorTitle . DBERROR_USERLISTDELETE_NORMALEND . rawValue

}

//グループユーザー一覧情報の削除結果を通知する

NotificationCenter . default . post (name: postName, object: nil )

})





いろいろな処理を同時に実行しすぎて、AppSync が処理し切れていなかったせいぽいです。
1つのDBアクセスが終了するまで次のアクセスを行わないようにプログラムを整理をしたところ、ちゃんと全て動くようになりました。

データベースへのコネクションを一つしか作っていなかったので当たり前と言えば当たり前ですかね。

ハマり時間 4時間





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

Last updated  2020.12.23 00:20:49
コメントを書く


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

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