問題タブ [dexie]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
promise - deferred promise を引き継ぐ Dexie.js デバッグ コードのソリューション
インデックス付きストレージの処理に Dexie.js を使用しています。ただし、延期されたプロミスによって起動されたプロセスの例外処理を引き継ぎます。これにより、バグが発生した場所を特定することが非常に困難になりました。
dexie - Dexie 更新フックの非同期変更
オブジェクトが保存または変更されたときにフックを使用してオブジェクトにいくつかのフィールドを追加するための最良の方法を見つけようとしています。
基本的な考え方はentry
、いくつかの複雑なクエリと他のエントリの計算に基づく一連のプロパティを含む必要があるオブジェクトがあるということです。これらの計算されたプロパティはすべて、 というプロパティの下に保存されますderived
。entry.derived
必要なたびに、または DB から読み取られるたびに計算すると、非常にコストがかかります。代わりに、事前にプロパティを設定することを選択しましたが、derived
フックはこれを行うのに最適な場所のようです。
これはcreating
フックには問題ないようです。derived
ただし、他のプロパティentry
が変更された場合は、再生成する必要もあります。このupdating
フックでは、変更を返すことによって追加の変更を送信する必要があります。これは、変更を生成できる唯一の方法が非同期呼び出しによるものであるため、問題があります。
以下は、問題を実証しようとする最小限のコードです。オプションはB
まだ試していませんが、うまくいかないと思います。
sorting - 整数値に基づくindexeddbソートインデックス
デクシーを使っています
そして、文番号でソートされた結果を取得する必要があります
しかし、上記のクエリから得られる結果は、整数列を文字列形式でソートするようなものです
例: 1,11,12,13,14...
整数でsentenceNoをソートする方法
例: 1,2,3,4,...
angularjs - メソッド「startsWithIgnoreCase」でコールバックが必要です
私はデモ プロジェクトを開発し、「dexie.js」でインデックス付きデータベースを構成しました。問題は、コールバックで関数を呼び出そうとしたときですstartsWithIgnoreCase
。
AngualrJS サービス:-
コントローラーで、
data
常に null を取得し、$rootScope.collectItem
これを初めて null と呼び、常に前の検索項目を表示します。以下、詳細です。
インデックス付きデータベースに最大100個のレコードがあるため、コールバックは機能しません。最初のstartsWithIgnoreCase
メソッドを呼び出すとnullに設定されますが、同じメソッドを呼び出して、以前に検索された一致した値を2回目に表示$rootScope.collectItem
しようとしています。$rootScope.collectItem
お気に入り:
- アイテム番号「441」を入力し、メソッドを
startsWithIgnoreCase
初めて呼び出してから$rootScope.collectItem
nullを設定したときのオートコンプリート検索ボックス。 - 「885」以外の別のアイテムを検索しようとすると、
$rootScope.collectItem
以前にフィルター処理された「441」のレコードが表示されます。
注:コールバックを実装したいのですstartsWithIgnoreCase
が、解決策が見つかりません。
angularjsを使用した「dexie.js」のサンプルコードを誰かが持っている場合は、そのリンクを送ってください。
javascript - Dexie でテーブルを更新する
indexedDB の「Type」という名前のフィールドを Dexie で更新しようとしています
私もこれを試します:
また、それ:
私のフィールド「タイプ」は決して更新されません:(
誰かがそれについて私を助けることができますか?
indexeddb - インデックス付きの db で dexie js を使用してレコードを取得します。
テーブルのすべてのレコードから最後の 40 レコードを取得するにはどうすればよいですか。
私の知る限り、インデックス付きデータベースのテーブルに存在するレコードの数を取得できます。
同様に...
上記は、テーブル内のカウントが何であれ返されます。今、テーブルから最後の40レコードを取得したかったのです。毎回テーブルには異なるレコードがあります。そうすることは可能ですか?count で.eachを使用することもできますか !! count を取得したかったのと同様に、キーが保持するデータが何であれ、それらのデータを返して表示する必要があります。
indexeddb - データ テーブル Web コンポーネントのバックエンドとしての IndexedDB
並べ替え、フィルタリング、無限スクロールなどをサポートするデータ テーブル/グリッド Web コンポーネントに取り組んでいます。既存のデータ モデルを IndexedDB (Dexie を使用) に置き換えることを検討しています。
私の最初の計画は、単一のデータベースを使用し、各コンポーネントに「テーブル」を用意することでした。ただし、ドキュメントを読んだ後、新しいテーブルが追加されるたびにデータベースのバージョンが上がることに気付きました。
それは何を意味しますか?
- このバージョン番号を追跡する必要がありますか?
- グリッドがデータベースを使用していて、別のグリッドがデータベースをアップグレードした場合、データは失われますか?
- 代わりにコンポーネントごとに DB を使用する方がよいでしょうか?
助けてくれてありがとう
javascript - デクシー - テーブルトランザクションの一部ではありません
ノードからツリーを構築する単純なアプリケーションに取り組んでいます。ノードがツリーから削除されると、すべての子ノードが削除され、それらのノードのすべての関連付けも削除されるように、次のフックが設定されています。次のコードを使用して、この動作を試して作成しています。
そして、「未処理の拒否: NotFoundError: テーブルリンクはトランザクションの一部ではありません」というエラーが表示されます。それを確認するためにトランザクション オブジェクトをログに記録し、ソース コードを調べてエラーの原因を調べたところ、storeNames のようです。私のデータベースは次のように構成されています。
しかし、storeNames を調べると、「ノード」しか表示されません。私は Dexie バージョン 2 ベータ 10 を使用しています。これが問題である可能性が非常に高いのですが、これが私の最初の indexeddb プロジェクトであり、dexie が推奨されたため、よくわかりません。すべてのガイドが 2.x の構文を使用しているため、ベータ版を使用しました。
どんな洞察も大歓迎です!
-- 少し遅れて -- 最新の 1.x リリースでこれを再試行したところ、次のエラーが表示されました。 "
では、リリースもベータ版もフックを削除できませんか? それとも、何か間違ったことをしただけですか? 私はこれに従いました。ご覧のとおり、私のフックコードはそこに提供されている例に基づいています。ストアの直後とオープンプロミス内にフックを設定しようとしましたが、何もうまくいかないようです。データベース全体を数回スキャンして、最終的にルートに接続しないノードを見つけるよりも、カスケード削除のようなものを使用したいと思います (笑)。
--edit: トランザクション ブロックを使用し、トランザクションに両方のテーブルを含めた後、そこから削除を実行することで、この問題を解決できることがわかりました。問題は、ここで書いたフック コードで使用されているトランザクションが、トランザクションに関係するテーブル以外のテーブルを認識していないことです。