私のプロジェクトで特定の操作をより効率的にする方法について考えています。現在の実装では、オブジェクトストアからすべてのオブジェクトをロードし、配列全体を反復し、オブジェクトにプロパティがないかどうか、またはプロパティが未定義であるかどうかをテストし、そのオブジェクトのセットを2番目の配列で収集し、これらのオブジェクト。プロパティがないindexedDBオブジェクトストアからオブジェクトを削除する効率的な方法
私はすでに、カーソルの繰り返しよりも明らかなパフォーマンス上の利点のためにgetAllを使用しています。
個別の削除要求が同時に呼び出されているため、値が見つからない非キーパス小道具のバッチ削除をサポートするようにindexedDB APIが進化しています。
問題は、各オブジェクトをメモリに完全にロードせずにプロパティがオブジェクトストアのキーパスにないときにプロパティをチェックする方法がないことです。オブジェクトはかなり大きい場合もあります。時には、各オブジェクトのプロパティの1つが非常に大きい(本質的にhtmlドキュメントの文字列)。
オブジェクトに存在しないプロパティや値を持たないプロパティはインデックスに表示されないため、インデックスを使用できません。
このようなオブジェクトをメモリに読み込まないようにする方法はありますか?
パーティショニングと2つのオブジェクトストアを使用して、クエリ可能な小道具用と完全なデータ用のものを考えました。しかし、これは読まれるたびに余分な要求をすることに変わる。私のアプリは、この時々バッチ削除操作を読んでからさらに多くのことを行います。
私は0/1を含んでおり、したがってインデックス可能なmyObject.doesOtherPropertyHaveValue
のような値を常に持つオブジェクトごとに追加のプロパティを格納することを考えましたが、これは素晴らしいとは思われません。もちろん、このインデックスだけをクエリしてgetAllKeysを使用すれば問題を解決できます。しかし、今やすべてのadd/putはこの機能的依存性を維持しなければなりません。
アドバイスありがとうございます。
ありがとうございました。私は基本的にオブジェクトからの削除をobjまたはobj.prop = nullまたはobj.prop = undefined;でないところから削除したいので、インデックスのデータを削除したいと思います。データはjsにロードされません。私が火の中で忘れてしまった1つの問題は、 'Promise.all(削除).catch()'の構文より '' Promise.all(deleteRequestPromises);を待っています。もちろん、私はインデックス上で削除した場合、私はこれが必要ではないだろうが、私はちょうどそれが現在の作品の方法についての点を追加したいと思った。 – Josh