Ped*_*ice 17 javascript web-sql indexeddb
我很好奇是否有一个库或项目为IndexedDB或WebSQL提供通用接口,具体取决于用户的浏览器支持.如果他们使用Chrome/Safari,请使用WebSQL,如果他们使用的是Firefox或Internet Explorer,请使用IndexedDB.
这个问题的海报似乎有自己开发的解决方案,但没有提供任何源代码.
Lee*_*iam 15
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
Run Code Online (Sandbox Code Playgroud)
您可能想要使用Lawnchair,这是众所周知的,正如Guido Tapia在您链接的问题中所提到的那样.
要么是这样,要么使用他的picnet.data.DataManager解决方案.
另请参阅persistence.js.
我已经为确切的目的编写了YDN-DB.它是IndexedDB,WebSql和localStorage的数据库包装器,构建在闭包库的顶部.
美丽的API,用于安全可靠的高性能大型Web应用程序.
将最新的缩小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);
}
Run Code Online (Sandbox Code Playgroud)
使用查询计算平均值
q = db.query('customer').average('age');
avg = q.fetch()
Run Code Online (Sandbox Code Playgroud)
q = db.query('customer', 'age').bound(18, 25, true).where('sex', '=', 'FEMALE').select('full_name')
young_girl_names = q.fetch()
Run Code Online (Sandbox Code Playgroud)
p1 = db.key('player', 1);
db.transaction(function() {
p1.get().success(function(p1_obj) {
p1_obj.health += 10;
p1.put(p123_obj);
});
}, [p1]);
Run Code Online (Sandbox Code Playgroud)
可以使用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
Run Code Online (Sandbox Code Playgroud)
看看这个:https://github.com/axemclion/IndexedDBShim
它是使用WebSql启用IndexedDB的polyfill.我使用它并且我认为它非常好,但是作为每个解决方案,它都有一些限制,尽管你几乎可以随意开发它而不会出现大问题.
小智 7
问题得到解答,我只是想分享更新.
2012年5月,JayData已经发布,它是JavaScript的统一数据访问库,有助于管理IndexedDB,WebSQL,SQLite,MongoDB,HTML5 localStorage数据库以及具有相同JavaScript语言查询的 Facebook,OData,WebAPI,YQL数据服务中的数据语法.
从WebSQL更改为IndexedDB意味着仅更改存储提供程序的类型:
var todoDB = new TodoDatabase({
provider: 'webSql', databaseName: 'MyTodoDatabase' });
var todoDB = new TodoDatabase({
provider: 'indexedDB', databaseName: 'MyTodoDatabase' });
Run Code Online (Sandbox Code Playgroud)
如果未指定提供程序,则库将按以下优先级顺序(WebSQL,IndexedDB,HTML5 localStorage)检测浏览器/设备的可用存储.
免责声明:我是开源JayData项目开发团队的成员