Skip to content

banyan/backbone.websql.deferred

Repository files navigation

Backbone.WebSQL.Deferred

WebSQL adapter for Backbone with promise support

Build Status

This is a rewrite and extension of the awesome MarrLiss/backbone-websql plugin by @MarrLiss.

Backbone.WebSQL.Deferred is different in a way,

  1. Support promise implementation (jQuery deferred and Q)
  2. Don't override Backbone.sync totally, can be selectable as a function of each model.
  3. No global pollution
  4. Support Index

Install

Download manually or with a package-manager.

$ bower install --save-dev backbone.websql.deferred
$ component install banyan/backbone.websql.deferred

Usage

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'

API

  • TODO

Changes

  • 0.2.0 (2014/03/31) - Model#fetch returns first model even if exists multi models

Requirements

  • backbone.js
  • underscore.js

Why WebSQL?

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.

Running tests

Make sure dependencies are installed:

$ npm install

Then run:

$ grunt test

About

WebSQL adapter for Backbone with promise support

Resources

License

Stars

Watchers

Forks

Packages

No packages published