問題タブ [indexeddb]
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.
html - indexedDB XML スキーマ?
Web SQL、indexedDB、さらには localStorage/JSON を抽象化する小さくてシンプルな API を作成しています。実際に使用されているデータベースが indexedDB または localStorage/JSON データ構造であっても、API を使用すると、プログラマーはデータベースを小さなリレーショナル データベースと考えることができます。
これを行う「標準的な」方法があるかどうかはわかりませんが、データベースの構造を XML スキーマで定義されたリレーショナル データベースとして表現しています。最終製品は次のようになると思います: xsd --> xml (スキーマに従い、db を定義) --> javascript api --> (indexeddb/wwebsql/localStorage-JSON)。良いアイデア?パフォーマンスはAPI内で調整できることに注意してください。つまり、indexedDB がリレーショナル データベースではなく、一部の人にとっては不浄な UNION であると表現することはわかっていますが、API 自体は indexedDB の方法で indexedDB と連携し、Web SQL の方法で Web SQL と連携します。
そうは言っても、私のスキーマを紹介します。とてもシンプルに保ちたいです。できるだけシンプルに。これについて何か改善できますか?追加したいことの 1 つは、フィールドの型の定義です。そのため、フィールドは属性タイプを持つことができますが、特定の値 (文字列、数値、blob、w/e) のみにすることができます。
exception - DATA_ERR: Chrome の DOM IDBDatabase Exception 5、修正方法は?
次のようなコード:
Firefox では正常に動作しますが、Chrome では最後の行で「DATA_ERR: DOM IDBDatabase Exception 5」がスローされます。この例外は何を意味しますか? 修正方法は?
indexeddb - indexeddb トランザクションを維持するにはどうすればよいですか?
複数のトランザクション (テーブルの読み取り、テーブルへの書き込み、別のテーブルへの書き込みなど) を開く代わりに、適切な IDBTransaction を使用している限り、単一のトランザクションからすべてを実行できますか?
Mozilla は次のように述べています。「トランザクションをアクティブに保つ唯一の方法は、トランザクションに対してリクエストを行うことです。リクエストが完了すると、DOM イベントが発生し、リクエストが成功したと仮定すると、トランザクションを延長する別の機会が得られます。そのコールバック中に。」これは少しあいまいです。DOM コールバックのイベント ハンドラーを提供すれば、そのコールバック内の任意の時点で、トランザクションが閉じられることを心配することなくトランザクションを使用できるということですか?
https://developer.mozilla.org/en/IndexedDB/Using_IndexedDB#Adding_data_to_the_database
html - indexedDB 使用時のエラー「要求されたデータベース オブジェクトが見つからなかったため、操作に失敗しました...」
私たちは、Firefox で IndexedDB を多用してオフライン データを保存するアプリケーションを構築しています。
これはほとんどの場合うまく機能しますが、次のようなエラーで失敗することがあります。
コードのさまざまな場所で失敗しているようです。これが原因の1つです:
私を困惑させているのは、通常は機能する自動テスト中に、失敗がまれに発生することです (数百回の実行ごとにこれらの失敗の 1 つが見られます)。
数百メガバイトのオーダーで、大量のデータも保存していることに言及する価値があります。自動化されたテストでは数メガバイトしか保存されないことが判明したため、サイズの問題ではありません。
他の誰かがこの問題を経験しましたか (または、さらに良いことに、経験して修正しました!)?
javascript - モバイルHTML5アプリケーションのローカルストレージ
私が持っているものの簡単な概要とそれに関連する問題。PhoneGapを使用してネイティブアプリとして実行するHTML5アプリがあります。これは、地元のフィールド調査ステーション向けの小さなデータ収集アプリケーションです。
このフィールドステーションの問題は、データを送信するための信号を失う傾向があることです。したがって、後で使用するために(またはサーバーに送信するために)データをデバイスに保存したいと思います。
保存する必要のあるデータは次のとおりです。
アプリ自体はスタンドアロンアプリになるので、データを保存する方法が欲しいです。
jQueryとHTML5の組み合わせを使用して、これを行うための最良の方法は何でしょうか?Web SQLが非推奨になっていることは知っていますが、これがこのデータを格納する唯一の方法である可能性があります。そうでない場合、送信する前にX個のエントリを動的に保存するための最良の方法は何でしょうか。
助けてくれてありがとう。
編集:
研究者が「フルトランセクト」をしなければならないとき、この状況はどうですか...
研究者は、各トランセクトで20の完全なデータ収集が行われるまで、場所を移動する必要があります。これには20の異なる場所が必要であり、それぞれにさまざまな数のサンショウウオと生き物が入ります。
localstorage
Key:Valueペアのみが許可されている場合、最後にオフロードするために、はるかに大きなデータセットをどのように保存しますか?
indexeddb - Firefox で開いた後、indexedDB データベースの構造を変更できますか?
データベースを開き、オブジェクト ストアを読み取り、データベースを変更できる必要があります。ページの読み込みごとに 1 回しかデータベース構造を変更できないようです。
非推奨の setVersion メソッドを使用する場合、これは Chrome で問題なく機能します。
html - FireFox および IE で IndexedDB が機能しない
Firefox と IE の最新バージョンを使用していますが、html5rocks.comの例はこれら 2 つのブラウザーでは機能しません。Chrome でテストしたところ、問題なく動作しました。これらのブラウザーは、次のように indexedDB を開こうとしてもイベント (「onsuccess」または「onerror」) を発生させないことに注意してください。
この問題のアイデア/解決策を共有してください。
javascript - IndexedDB の objectstore ブロック UI に大量に挿入する
IndexedDB のオブジェクトストアに ~35000 個のオブジェクトを保存したいと考えています。以下のコードを使用して挿入しています。
上記のコードは問題なく動作しますが、35000 個以上のオブジェクトをループして挿入すると、UI が 200 秒間応答しなくなります。WebWorkers を使用できるのではないかと思ったのですが、WebWorkers 内で IndexedDB を使用することはできません。一括挿入する方法を見つけようとしましたが、見つかりませんでした。UI をブロックせずに大量のオブジェクトを挿入する方法のアイデアはありますか?
indexeddb - IndexedDBの1つのトランザクションに複数のリクエストを入れるにはどうすればよいですか?
私のコードは次のようなものです。
clear
2番目のリクエスト例外の直後とオンでDONEアラートを受け取るという問題が発生します。
IndexedDBでトランザクションを「再利用」することは可能ですか?
UPD:上記のコードは、最新のChromiumナイトリービルドで期待どおりに機能することがわかりました。
javascript - JavaScript で大きな (12K 行以上) 配列を処理する
このプロジェクトの要件は奇妙ですが、洞察を得たいと思っています...
約 12,000 行のデータ、約 12 ~ 15 列の CSV ファイルがあります。それを JSON 配列に変換し、JSONP 経由でロードしています (クライアント側で実行する必要があります)。データ セットに対してあらゆる種類のクエリを実行して、より小さなフィルター処理されたデータ セットを返すには、数秒かかります。私は現在 JLINQ を使用してフィルタリングを行っていますが、基本的には配列をループして、条件に基づいて小さなセットを返すだけです。
webdb または indexeddb を使用すると、このフィルタリングを大幅に高速化できますか? この特定のタイプの問題に取り組んでいるチュートリアル/記事はありますか?