WebSQL adapter for Backbone with promise support
This is a rewrite and extension of the awesome MarrLiss/backbone-websql plugin by @MarrLiss.
Backbone.WebSQL.Deferred is different in a way,
- Support promise implementation (jQuery deferred and Q)
- Don't override
Backbone.sync
totally, can be selectable as a function of each model. - No global pollution
- Support Index
Download manually or with a package-manager.
$ bower install --save-dev backbone.websql.deferred
$ component install banyan/backbone.websql.deferred
db = openDatabase 'bb-websql', '', 'Backbone Websql Tests', 1024 * 1024
User = Backbone.Model.extend
store: new Backbone.WebSQL(db, 'users')
Users = Backbone.Collection.extend
model: User
store: User::store
user = new User
name: 'foo'
user.save().done =>
loadUser = User.find user.get 'id'
loadUser.fetch().done ->
console.log loadUser.get 'name' # => 'foo'
- TODO
- 0.2.0 (2014/03/31) - Model#fetch returns first model even if exists multi models
- backbone.js
- underscore.js
WebSQL is deprecated in 2010 by W3C, don't we use WebSQL? First consider if you can use IndexedDB (caniuse.com/indexeddb). Even W3C supports IndexedDB, it's not matured yet as you see. WebSQL is better than localStorage in terms of performance and capacity if your content is big. WebSQL is supported by many browsers (caniuse.com/sql-storage). It is said that Safari, Opera, iOS, Opera Mobile, Android Browser favour WebSQL. At least Chromium team does not plan to remove WebSQL. There's no silver bullet for web storage but it's up to the environment and what makes.
Make sure dependencies are installed:
$ npm install
Then run:
$ grunt test