node package manager
Orgs are free. Discover, share, and reuse code in your team. Create a free org »

pouchdb-silverlining

pouchdb-silverlining

Build Status

The pouchdb-silverlining project is a PouchDB plugin that allows SQL queries to be performed against PouchDB databases. This mirrors the functionality found in the silverlining library.

It requires the pouchdb-find plugin.

Installation

To use this plugin, include it after pouchdb.js in your HTML page:

<script src="pouchdb.js"></script>
<script src="pouchdb.find.js"></script>
<script src="pouchdb.silverlining.js"></script>

Or to use it in Node.js, just npm install it in addition to PouchDB:

npm install pouchdb-myplugin

And then attach it to the PouchDB object:

var PouchDB = require('pouchdb');
PouchDB.plugin(require('pouchdb-find'));
PouchDB.plugin(require('pouchdb-silverlining'));

Usage

Connect to your database as normal:

var db = new PouchDB('mydb');

and then query with SQL:

var q = "SELECT name, cost FROM animals WHERE collection = 'cats' ORDER BY name DESC LIMIT 50";
db.sql(q).then(console.log);

Other example queries:

-- fetch all fields 
SELECT * FROM animalsdb
 
-- fetch selected fields 
SELECT name, colour, price FROM animalsdb
 
-- fetch data with WHERE clause 
SELECT name FROM animalsdb WHERE colour = 'tabby'
 
-- fetch data with a more complex WHERE clause 
SELECT name FROM animalsdb WHERE type!='cat' OR (price > 500 AND price < 1000)
 
-- limit the number of items returned 
SELECT name FROM animalsdb LIMIT 10
 
-- limit the number of items and skip rows 
SELECT name FROM animalsdb LIMIT 20,10
 
-- ordering ascending 
SELECT name FROM animalsdb ORDER BY price
 
-- ordering descending 
SELECT name FROM animalsdb ORDER BY price DESC
 
-- multiple field ordering descending 
SELECT name FROM animalsdb ORDER BY type,price
 
-- all together 
SELECT name,colour,price FROM animalsdb WHERE type!='cat' OR (price > 500 AND price < 1000ORDER BY type, price LIMIT 20,10

Building

npm install
npm run build

Your plugin is now located at dist/pouchdb.silverlining.js and dist/pouchdb.silverlining.min.js and is ready for distribution.