IndexedDB アップグレード イベントを中止することはできますか?

ぬの

ユーザーが以前のデータベース (DB) バージョン (ハンドラーでoldVersion検出された) から最近のバージョン (オープンしようとしている) にデータを移行できるようにする IndexedDB インターフェイスを実装しようとしていますonupgradeneededevent.target.oldVersioncurrentVersion

  1. currentVersionオープン操作をキャンセルまたは中止します
  2. 以前の DB を開く ( でoldVersion検出onupgradeneeded)
  3. そのデータを読む
  4. DBを閉じる
  5. ( currentVersionDBを開く通常のプロセスを続行します)

アップグレード イベントをoldVersion中止できない (例外 11) currentVersion(キャンセルすることもできない) ため、開くときに問題が発生ます

例外 11: 許可されていないオブジェクトに対して、または許可されていないときに操作が呼び出されました。

...currentVersionを開くために、 のアップグレード イベントを何らかの方法でキャンセルまたは中止することは可能oldVersionですか?

注: ... そうでない場合、私が行方不明になっている古いバージョンの DB からデータを移行する別の方法はありますか?

ジョシュア・ベル

oldVersion を開くために、currentVersion のアップグレード イベントを何らかの方法でキャンセルまたは中止することは可能ですか?

var rq = indexedDB.open(name, ver);
rq.onupgradeneeded = function(e) {
  rq.transaction.abort();
};
rq.onsuccess = function(e) { console.log('THIS SHOULD NOT RUN'); };
rq.onerror = function(e) { console.log('This should run'); };

不足している古いバージョンの DB からデータを移行する他の方法はありますか?

通常、これは、提供さupgradeneededれたverionchangeトランザクション中に、古いバージョンからデータとスキーマを移行する目的です

var rq = indexedDB.open(name, 2);
rq.onupgradeneeded = function(e) {
  var db = rq.result;
  if (e.oldVersion < 1) {
    // database didn't exist at all, create new schema
    db.createObjectStore('store2');
  } else if (e.oldVersion < 2) {
    // do the migration - assumes v1 had 'store1'
    var store1 = rq.transaction.objectStore('store1');
    var store2 = db.createObjectStore('store2');
    var r = store1.openCursor();
    r.onsuccess = function() {
      var cursor = r.result;
      if (cursor) {
        store2.put(cursor.value, cursor.key);
        cursor.continue();
      } else {
        // migration done, delete old store
        db.deleteObjectStore('store1');
      }
    };
  }
};

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

IndexedDB:約束でアップグレードしますか?

分類Dev

アップグレードイベントでIndexedDBを非同期に更新します

分類Dev

アップグレード時にIndexedDBの既存のObjectStoreデータを保持する

分類Dev

Firefoxを使用してindexeddbデータベースにデータをput()することはできません

分類Dev

IndexedDBメインスレッドとWebWorkerイベントリスナー

分類Dev

ヘルムのインストールを中止することはできますか?

分類Dev

IndexedDBログイン時にDBをクリアする方法は?

分類Dev

大きなファイルをIndexedDBストレージに効率的にロードする方法は?私のアプリは100,000行以上でクラッシュしています

分類Dev

フェッチイベントをインターセプトし、indexedDBデータを返します

分類Dev

イベントハンドラーからindexedDBクエリ結果を返す方法は?

分類Dev

SafariプライベートモードでのindexedDBとlocalstorageの最良のフォールバックは何ですか

分類Dev

アップグレード後:このエンベロープシステムトレイアイコンとは何ですか?どうすればそれを取り除くことができますか?

分類Dev

アップグレード後:このエンベロープシステムトレイアイコンとは何ですか?どうすればそれを取り除くことができますか?

分類Dev

20.04アップグレードインストール中にコンピューターを使い続けることはできますか?

分類Dev

Service Workerの「sync」イベントはIOSで機能しません。オフラインデータをindexedDBに保存する方法は?

分類Dev

アンロード前にindexeddbを削除する方法

分類Dev

IndexedDBで重複をグループ化する方法

分類Dev

PhoneGapハイブリッドモバイルアプリケーション用のIndexedDBまたはHTML5ストレージ?

分類Dev

シングルページアプリケーションでIndexedDbとの接続を管理する方法

分類Dev

シングルページアプリケーションでIndexedDbとの接続を管理する方法

分類Dev

IndexedDB:別のドメインにコピーしますか?

分類Dev

indexedDB.deleteDatabaseでエラーイベントを発生させるにはどうすればよいですか?

分類Dev

CentOSでLinuxカーネルをアップグレードする場合、後でダウングレードすることはできますか?

分類Dev

アンロードする前にIndexedDBに保存する

分類Dev

indexedDBデータのダンプ

分類Dev

NgxIndexedDBを使用してindexedDBインデックスから複数のレコードを取得するにはどうすればよいですか?

分類Dev

IndexedDB のミドルウェアとして推奨されるライブラリまたはフレームワークは何ですか?

分類Dev

アンドロイドStudioでデバッグ中に私は、以前のブレークポイントに戻ってステップすることはできますか?(フレームをドロップします)

分類Dev

サイレントリリースまたは無人リリースのアップグレードを行うことはできますか?

Related 関連記事

  1. 1

    IndexedDB:約束でアップグレードしますか?

  2. 2

    アップグレードイベントでIndexedDBを非同期に更新します

  3. 3

    アップグレード時にIndexedDBの既存のObjectStoreデータを保持する

  4. 4

    Firefoxを使用してindexeddbデータベースにデータをput()することはできません

  5. 5

    IndexedDBメインスレッドとWebWorkerイベントリスナー

  6. 6

    ヘルムのインストールを中止することはできますか?

  7. 7

    IndexedDBログイン時にDBをクリアする方法は?

  8. 8

    大きなファイルをIndexedDBストレージに効率的にロードする方法は?私のアプリは100,000行以上でクラッシュしています

  9. 9

    フェッチイベントをインターセプトし、indexedDBデータを返します

  10. 10

    イベントハンドラーからindexedDBクエリ結果を返す方法は?

  11. 11

    SafariプライベートモードでのindexedDBとlocalstorageの最良のフォールバックは何ですか

  12. 12

    アップグレード後:このエンベロープシステムトレイアイコンとは何ですか?どうすればそれを取り除くことができますか?

  13. 13

    アップグレード後:このエンベロープシステムトレイアイコンとは何ですか?どうすればそれを取り除くことができますか?

  14. 14

    20.04アップグレードインストール中にコンピューターを使い続けることはできますか?

  15. 15

    Service Workerの「sync」イベントはIOSで機能しません。オフラインデータをindexedDBに保存する方法は?

  16. 16

    アンロード前にindexeddbを削除する方法

  17. 17

    IndexedDBで重複をグループ化する方法

  18. 18

    PhoneGapハイブリッドモバイルアプリケーション用のIndexedDBまたはHTML5ストレージ?

  19. 19

    シングルページアプリケーションでIndexedDbとの接続を管理する方法

  20. 20

    シングルページアプリケーションでIndexedDbとの接続を管理する方法

  21. 21

    IndexedDB:別のドメインにコピーしますか?

  22. 22

    indexedDB.deleteDatabaseでエラーイベントを発生させるにはどうすればよいですか?

  23. 23

    CentOSでLinuxカーネルをアップグレードする場合、後でダウングレードすることはできますか?

  24. 24

    アンロードする前にIndexedDBに保存する

  25. 25

    indexedDBデータのダンプ

  26. 26

    NgxIndexedDBを使用してindexedDBインデックスから複数のレコードを取得するにはどうすればよいですか?

  27. 27

    IndexedDB のミドルウェアとして推奨されるライブラリまたはフレームワークは何ですか?

  28. 28

    アンドロイドStudioでデバッグ中に私は、以前のブレークポイントに戻ってステップすることはできますか?(フレームをドロップします)

  29. 29

    サイレントリリースまたは無人リリースのアップグレードを行うことはできますか?

ホットタグ

アーカイブ