How to use pouchdb - 10 common examples

To help you get started, we’ve selected a few pouchdb examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github redgeoff / delta-pouch / test / index.js View on Github external
/*jshint expr:true */
'use strict';

var Pouch = require('pouchdb');

// Use mem adapter as level down adapter has problems running on virtualbox:
// https://github.com/Level/levelup/issues/222
Pouch.plugin(require('pouchdb-adapter-memory'));

var deltaPlugin = require('../');
Pouch.plugin(deltaPlugin);

var chai = require('chai');
chai.use(require("chai-as-promised"));

chai.should(); // var should = chai.should();
var Promise = require('bluebird');

var dbs;
if (process.browser) {
  dbs = 'testdb' + Math.random() +
    ',http://localhost:5984/testdb' + Math.round(Math.random() * 100000);
} else {
  dbs = process.env.TEST_DB ? process.env.TEST_DB : 'testdb';
github garbados / linkfriend / src / js / lib / db.js View on Github external
doc.tags.forEach(emit)
        }
      }.toString(),
      reduce: '_count'
    },
    dateSort: {
      map: function (doc) {
        if (/^bookmark/.test(doc._id) && doc.createdAt) {
          emit(doc.createdAt)
        }
      }.toString()
    }
  }
}

PouchDB.plugin({
  setup: async function () {
    // add mango indexes
    await this.createIndex({
      index: {
        // TODO partial filter selector, once implemented: https://github.com/pouchdb/pouchdb/issues/7467
        fields: ['_id', 'tags']
      },
      ddoc: 'tag-search'
    })
    // add design documents
    try {
      await this.put(designTags)
    } catch (error) {
      // update ddoc if it differs from the one found.
      if (error.name === 'conflict') {
        const ddoc = await this.get(designTags._id)
github Tangerine-Community / Tangerine / client / src / app / core / update / update / updates.ts View on Github external
import { UserService } from "src/app/shared/_services/user.service";
import PouchDB from 'pouchdb'
PouchDB.defaults({auto_compaction: true, revs_limit: 1})

export const updates = [
  {
    requiresViewsUpdate: true,
    script: (userDb) => {
      return new Promise(resolve => {
        console.log(`This update will never run :-).`);
        resolve();
      })
    }
  },
  // Transform array style input.value from ['foo', 'bar'] to [{name: 'foo', value: 'on'}, {name: 'bar', value: 'on'}]
  {
    requiresViewsUpdate: false,
    script: (userDb) => {
      return new Promise(async resolve => {
github Tangerine-Community / Tangerine / scripts / generate-csv / generate-lines.js View on Github external
async function go(params) {
  const DB = PouchDB.defaults(params.dbDefaults)
  const db = new DB(params.dbName)
  const docs = await getData(db, params.formId, params.skip, params.limit)
  if (docs.length === 0) {
    process.stderr.write('No docs in that range')
    return process.exit()
  }
  // Order each datum's properties by the headers for consistent columns.
  const rows = docs.map(doc => params.headers.map(header => (doc[header]) ? doc[header] : ''))
  const output = new CSV(rows).encode()
  process.stdout.write(output)  
  process.exit()
}
go(params)
github Tangerine-Community / Tangerine / client / src / app / core / sync-records / peers / peers.component.ts View on Github external
async transferData() {
    if (this.window.isCordovaApp) {
      PouchDB.plugin(window['PouchReplicationStream'].plugin);
      PouchDB.adapter('writableStream', window['PouchReplicationStream'].adapters.writableStream);
      let dumpedString = '';
      const stream = new window['Memorystream']();
      stream.on('data', function(chunk) {
        dumpedString += chunk.toString();
      });
      const username = this.userService.getCurrentUser();
      const source = new PouchDB(username);
      source.dump(stream).then(function () {
        // console.log('Yay, I have a dumpedString: ' + dumpedString);
        window['TangyP2PPlugin'].transferData(dumpedString, function(message) {
          const objectConstructor = ({}).constructor;
          if (message.constructor === objectConstructor) {
            const messageStr = message.message;
            document.querySelector('#p2p-results').innerHTML += messageStr + '<br>';
          } else {
            console.log('Message: ' + message);
github Tangerine-Community / Tangerine / client / src / app / core / sync-records / peers / peers.component.ts View on Github external
window['TangyP2PPlugin'].listenForTransfer(null, (message) =&gt; {
        const objectConstructor = ({}).constructor;
        // test if it's an object:
        if (message.constructor === objectConstructor) {
          const messageStr = message.message;
          // TODO: JSONObject is available if we need it.
          // const object = message.object;
          if (message.messageType === 'payload') {
            PouchDB.plugin(window['PouchReplicationStream'].plugin);
            PouchDB.adapter('writableStream', window['PouchReplicationStream'].adapters.writableStream);
            const writeStream =  new window['Memorystream'];
            writeStream.end(messageStr);
            const username = this.userService.getCurrentUser();
            const dest = new PouchDB(username);
            const pluginMessage = 'I loaded data from the peer device.';
            dest.load(writeStream).then(function () {
              document.querySelector('#p2p-results').innerHTML += pluginMessage + '<br>';
            }).catch(function (err) {
              message = 'oh no an error: ' + err;
              console.log(message);
              document.querySelector('#p2p-results').innerHTML += message + '<br>';
            });
          } else {
            console.log('Message: ' + messageStr);
            document.querySelector('#p2p-results').innerHTML += messageStr + '<br>';
          }
github BeagleLab / beagle / js / main.js View on Github external
var domready = require('domready')
var style = require('beagle-style')
var React = require('react')
var App = React.createFactory(require('./app.jsx'))
var linkHandler = require('./linkhandler.js')
var sampleData = require('../lib/sampleData.js')
var url = require('./lib/url-checks')
var PDFJS = require('beagle-pdf')
var sidebarOpen = false
var sidebarId = 'beagle-sidebar'

// var level = require('level-browserify')
var PouchDB = require('pouchdb')
var db = new PouchDB('test')

PouchDB.sync('test', 'http://54.164.111.240:5984/test')

// DEV: This is how you clear the database
// db.destroy().then(function () {
//   console.log('Done')
// }).catch(function (err) {
//   console.log('err', err)
// })

// console.log('Main.js is being called from inside bundle.min.js')

function getModules (requestModules, cb) {
  // Get the current list of used modules
  chrome.storage.sync.get('modules', function (result) {
    var options = {}

    // If the extension has specified new modules to load
github jonniespratley / angular-cms / routes / cms-router.js View on Github external
router.use(function(req, res, next) {
		console.log('cms-router Time:', Date.now());
		next();
	});

	//Fix for cloud foundry
	if (process.env.VCAP_APP_PORT) {
		config.port = process.env.VCAP_APP_PORT;
	}

	// TODO: Using pouchdb
	var PouchDB = require('pouchdb');
	PouchDB.debug('*');
	var db = new PouchDB(config.db.local);
	var db2 = new PouchDB(config.db.remote);
	PouchDB.sync(db, db2);
	app.locals.db = db;

	console.log('Connected to', config.db.local);

// TODO:

/*
router.route('/users/:user_id')
.all(function(req, res, next) {
  // runs for all HTTP verbs first
  // think of it as route specific middleware!
  next();
})
.get(function(req, res, next) {
  res.json(req.user);
})
github automerge / trellis / src / lib / pouch_adapter.js View on Github external
this.db.put({ _id: this.docId }).then((result) => {
          this.doc._rev = result.rev

          if(this.onLoad) this.onLoad(null)
        })
      } else {
        console.log(error)
      }
    })

    // Set up replication subscriptions
    let options = { live: true }
    PouchDB.replicate(this.db, this.remote, options)
      .on("error", console.log)

    PouchDB.replicate(this.remote, this.db, options)
      .on("change", (info) => {
        console.log("Remote change")

        this.db.get(this.doc._id).then((doc) => {
          this.doc = doc

          if(this.onChange) this.onChange(doc.state)
        })
      })
      .on("error", console.log)
  }
github couchbaselabs / mini-hacks / gcm-web-push-notifications / src / app.js View on Github external
var PouchDB = require('pouchdb');

// Expose PouchDB on the window object to use the
// PouchDB Chrome debugger extension http://bit.ly/1L6dArH
window.PouchDB = PouchDB;


var db = new PouchDB('timely-news');
PouchDB.plugin(require('pouchdb-find'));

PouchDB.replicate('timely-news', 'http://localhost:4984/db', {
  live: true
});

if ('serviceWorker' in navigator) {
  navigator.serviceWorker.register('./service-worker.js', {scope: './'});
  navigator.serviceWorker.ready.then(function (serviceWorkerRegistration) {
    serviceWorkerRegistration.pushManager.subscribe({userVisibleOnly: true})
      .then(function (pushSubscription) {
        console.log('The reg ID is :: ', pushSubscription.subscriptionId);

        db.createIndex({index: {fields: ['type']}})
          .then(function() {
            db.find({
              selector: {type: 'profile'}
            }).then(function (res) {
              console.log(res);