オフライン機能を備えた 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 内部エラーも返します。