3

オフライン機能を備えた Web アプリケーションを構築しています。私はそれを達成するためにwebcacheとの組み合わせを使用しています。pouchDB

現在、DB の破損に対する回復メカニズムをテストしています。私の前提は、pouchDB はクライアントで実行されているため、誤ってまたは故意に DB を破損する可能性がある人に公開されているということです。また、バグなどが発生した場合、DB が破損する可能性があります。次に、DB が破損した場合、webapp によって検出されてクリーンアップされない限り、これは正しく機能しません。

テストは非常に簡単です: - PouchDB を作成します。

    var dbOptions = {
       auto_compaction : false,
       キャッシュ: 偽
    };
    var db = new PouchDB('myDB',dbOptions);

  • 開発者ツールを使用して、データベースの一部を削除します。
  • アプリケーションをロードすると、すべてのドキュメントを読み取ろうとします。
    db.allDocs({include_docs : true}, function(_err,_response){
        (特定のコードはこちら)
    }

"Uncaught TypeError: Cannot set property '_rev' of undefined "が投げられるのはこの時点です。例外をキャッチし、pouchDB によって提供された promise を使用しようとしましたが、どれも機能しませんでした。

同じような悩みを抱えた仲間はいませんか?どのように解決しましたか?

編集: PouchDB が 500 内部エラーを返した場合、アプリケーションはどのように回復するのでしょうか? データベースを破壊しようとした

    db.destroy(function(err,info){console.log(err||info);}

しかし、それは機能しません。500 内部エラーも返します。

4

2 に答える 2