NotFoundError: Failed to execute ‘transaction’ on ‘IDBDatabase’の解決方法

Amplifyで開発中、以下のエラー時の対処方法がわからずハマったので解決方法を残しておく。

NotFoundError: Failed to execute ‘transaction’ on ‘IDBDatabase’: One of the specified object stores was not found.

解決方法

Chromeであれば「ストレージ」-「IndexedDB」を選択し、「データベースを削除」ボタンをクリックするだけである。

ストレージ-IndexedDB
『「amplify-datastore」データベースの削除を確認してください。』
削除された。

画面をリロードすると正常に表示される。

リロードすると画面が表示される。

IndexedDBとは

AmplifyのDataStoreを使えば簡単にDBからデータを取得・更新ができるが、IndexedDBを使って何をしているのか?以下にその概要があった。

■DataStore – How it works – JavaScript – AWS Amplify Docs
https://docs.amplify.aws/lib/datastore/how-it-works/q/platform/js/#sync-data-to-cloud

DataStore → AppSync(GraphQL) → DB

ただし、Amplifyのバージョンアップがいつの間にかされており、Amplify StudioのLocal setup instructions のお手本コードを見ると、GraphQLが標準になっていた。

Local setup instructions

つまり、DataStoreは今後デフォルトでは使わないことが推奨されている。

また、AppSyncの設定が自動でされていたのであまり気にしなかったが、デフォルトの認証方法であったAPIキーに有効期限があり、どこかで有効期限が切れることもあり本番環境では非推奨となっている。

AWS AppSync デフォルトの認証モード

次回、新しくなったAmplifyの構築方法についてまとめる。