ユーザーのブラウザのサポートに応じて、IndexedDBまたはWebSQLへの汎用インターフェイスを提供するライブラリまたはプロジェクトがあるかどうか知りたいです。Chrome / Safariを使用している場合はWebSQLを使用し、FirefoxまたはInternetExplorerを使用している場合はIndexedDBを使用します。
この質問の投稿者は、自家製の解決策を持っているようですが、ソースコードを提供していません。
ユーザーのブラウザのサポートに応じて、IndexedDBまたはWebSQLへの汎用インターフェイスを提供するライブラリまたはプロジェクトがあるかどうか知りたいです。Chrome / Safariを使用している場合はWebSQLを使用し、FirefoxまたはInternetExplorerを使用している場合はIndexedDBを使用します。
この質問の投稿者は、自家製の解決策を持っているようですが、ソースコードを提供していません。
JasonCasdenは、彼のプレゼンテーションであるブラウザ内ストレージと私で、ライブラリ/ラッパーの膨大なリストを共有しています。リストは次のとおりです。
lawnchair
persistence.js
persistJS
amplify.store
localStorageDB
https://github.com/axemclion/IndexedDB
realStorage
YUI3 CacheOffline
dojox.storage
DomSQL
Impel
ActiveJS ActiveRecord
JazzRecord
picnet.data.DataManager
ShinyCar
lscache
Kizzy
Artemia
microcache.js
Store.js
リンク先の質問でGuidoTapiaが言及しているように、非常によく知られているLawnchairを使用することをお勧めします。
それか、彼のpicnet.data.DataManagerソリューションを使用してください。
また、persistence.jsもご覧ください。
私は正確な目的のためにYDN-DBを書きました。これは、IndexedDB、WebSql、およびlocalStorageのデータベースラッパーであり、クロージャーライブラリの上に構築されます。
安全で堅牢な高性能大規模ウェブアプリのための美しいAPI。
最新の縮小されたJSスクリプト(ダウンロードセクションを参照)をHTMLファイルにインポートします。これにより、グローバルスコープにydn.db.Storageという単一のオブジェクトが作成されます。
var db = new ydn.db.Storage('db name');
db.setItem('x', 'some value')
db.getItem('x').success(function(value) {
console.log('x = ' + value);
}
クエリを使用して平均を計算する
q = db.query('customer').average('age');
avg = q.fetch()
q = db.query('customer', 'age').bound(18, 25, true).where('sex', '=', 'FEMALE').select('full_name')
young_girl_names = q.fetch()
p1 = db.key('player', 1);
db.transaction(function() {
p1.get().success(function(p1_obj) {
p1_obj.health += 10;
p1.put(p123_obj);
});
}, [p1]);
文字列値データは、オプションでSHA-1暗号を使用して暗号化できます。
db = new ydn.db.Store('store name')
db.setSecret(passphase); // generally send from server side upon login
db.setItem(key, value, 3600*1000); // data expire on one hour
db.getItem(key); // data will be decrypted using the provided passphase
これを見てください:https ://github.com/axemclion/IndexedDBShim
これは、WebSqlを使用してIndexedDBを有効にするためのポリフィルです。私はそれを使用していて、それはかなり良いと思いますが、すべての解決策として、大きな問題なしにほとんど何でも開発できるものの、いくつかの制限があります。
質問に答えました。更新を共有したいだけです。
2012年5月にJayDataがリリースされました。これは、JavaScriptの統合データアクセスライブラリであり、IndexedDB、WebSQL、SQLite、MongoDB、HTML5 localStorageデータベース、およびFacebook、OData、WebAPI、YQLデータサービスのデータを同じJavaScript言語クエリで管理するのに役立ちます。構文。
WebSQLからIndexedDBに変更するということは、ストレージプロバイダーのタイプのみを変更することを意味します。
var todoDB = new TodoDatabase({
provider: 'webSql', databaseName: 'MyTodoDatabase' });
var todoDB = new TodoDatabase({
provider: 'indexedDB', databaseName: 'MyTodoDatabase' });
プロバイダーを指定しない場合、ライブラリーはブラウザー/デバイスの使用可能なストレージを次の優先順位(WebSQL、IndexedDB、HTML5 localStorage)で検出します。
免責事項:私はオープンソースのJayDataプロジェクトの開発者チームのメンバーです
あなた(OP)があなたが受け入れた答えで提案された解決策に満足していることを願っています。
有能なソリューション(OPを含む場合と含まない場合があるグループ)をまだ探している人は、BakedGoodsをチェックしてください。
これは、すべてのネイティブおよび一部の非ネイティブクライアントストレージ機能でストレージ操作を実行するために使用できる統一されたインターフェイスを確立するライブラリです。また、それぞれがユーザーに提供する柔軟性とオプションを維持します。
これを使用すると、サポートされているデータベースタイプのいずれかでストレージ操作を実行することが問題になります...
...両方のデータベースタイプに適切な操作オプションと同等の構成を指定します。
//If the operation is a set(), and the referenced structures
//don't exist, they will be created automatically.
var webSQLOptionsObj = {
databaseName: "Example_DB",
databaseDisplayName: "Example DB",
databaseVersion: "",
estimatedDatabaseSize: 1024 * 1024,
tableData: {
name: "Main",
keyColumnName: "lastName",
columnDefinitions: "(lastName TEXT PRIMARY KEY, firstName TEXT)"
},
tableIndexDataArray: [name: "First_Name_Index", columnNames: "(firstName)"]
};
var indexedDBOptionsObj = {
databaseName: "Example_DB",
databaseVersion: 1,
objectStoreData: {
name: "Main",
keyPath: lastName,
autoIncrement: false
},
objectStoreIndexDataArray: [
{name: "First_Name_Index", keyPath: "firstName", unique: false, multiEntry: false}
],
};
var optionsObj = {
conductDisjointly: false,
webSQL: webSQLOptionsObj,
indexedDB: indexedDBOptionsObj
};
...そして操作を行う:
bakedGoods.set({
data: [
{value: {lastName: "Obama", firstName: "Barack"}},
{value: {lastName: "Biden", firstName: "Joe"}}
],
storageTypes: ["indexedDB", "webSQL"],
options: optionsObj,
complete: function(byStorageTypeStoredItemRangeDataObj, byStorageTypeErrorObj){}
});
そのシンプルなインターフェイスと比類のないストレージ施設のサポートは、一部のストレージ施設固有の構成のサポートが不足しているという犠牲を払って提供されます。たとえば、複数列の主キーを持つWebSQLテーブルでのストレージ操作の実行はサポートされていません。
したがって、これらのタイプの機能を多用する場合は、他の場所を探すことをお勧めします。
ああ、そして完全な透明性のために、BakedGoodsは本当にあなたによって維持されています:)。