JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 6
  • Score
    100M100P100Q39714F
  • License Apache-2.0

Update design views in a couchdb instance from json documents store locally. Update the local json document with the design view in couchdb.

Package Exports

  • couch-update-views

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (couch-update-views) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

couch-update-views

  • Do you use git and would like to maintain a copy of your couchdb view's code in your repository?
  • Do you have multiple couchdb to maintain (production, development)?

couch-update-views allows you to synchronize design views from a local directory to your couch database. It will also help you update the JSON document of a view in your local directory with the view's content in the database.

Installing couch-update-views


npm install couch-update-views

Running couch-update-views:

Generate a script

Name your script, ex: couchUpdateViews.js and add the following lines:


var couchUpdateViews = require('couch-update-views');
couchUpdateViews.couchUpdateViews();

You should see the following output:


node couchUpdateViews.js --migrate | --update <design view name>
Options:
    --migrate    Migrate design documents in couchdb. The 'design views' in couchdb are updated with the contents of the 'viewsDir' folder if they differ.
    --update  <design view name>   Update the design view document stored in 'viewsDirs' with the document stored in 'couchDB'    
    --viewsDir <path>   Directory with desgin views documents JSON files. (required)
    --couchDB  <url>    CouchDB URL. (required)

Synchronize the DB with the folder content


node couchUpdateViews.js --migrate --viewsDir /path/to/views/folder --couchDB http://localhost:5984/dbname

If the dbname does not exist, it will create the db for you and add all the views for you.

Update a view

Generate your view using couchdb utils. If you are running couchdb locally and using the default port visit:


http://localhost:5984/_utils/database.html?dbname/_temp_view

  • Write the view's code:

In the 'Map Function' box add:


function(doc){
    if(doc.type === "user"){
        emit(doc.email, doc.name);
    }
}

  • Save the view using 'Save As...' button

Design document: _design/searchUser

View Name: email

  • Update the view's content in your local folder:

node couchUpdateViews.js --viewsDir /path/to/views/folder --couchDB http://localhost:5984/dbname --update searchUser

The output of this command yields a file named 'searchUser.json' located at '--viewsDir' folder. The content of the file should look like:


{
    "_id": "_design/searchUser",
    "language": "javascript",
    "views": {
        "email": {
            "map": "function(doc) {\n\tif(doc.type === \"user\"){\n\t\temit(doc.email, doc.name);\n\t}\n}"
        }
    }
}

Using couch-update-views w/o command line

Synchronize the DB with the folder content


var couchUpdateViews = require('couch-update-views');
couchUpdateViews.migrateUp('http://localhost:5984/dbname', '/path/to/views')//DB URL, your local folder with views
.then(function(res){
    console.log(res);//result of the operation
});

Update a view


var couchUpdateViews = require('couch-update-views');
couchUpdateViews.updateDesignDocument('http://localhost:5984/dbname', '/path/to/views', 'searchUser')//DB URL, local folder, view name
.then(function(res){
    console.log(res);//result of operation
});

Use case example when starting your server application

In this example, I'm using Hapi as my server. The plugin configuration has the couchdb url.


conf = {
    "couchdb": "http://localhost:5984/somedb",
    "dirname": "/local/path/to/views"
}


module.exports = function (server, conf) {
    
    var couchUpdateViews = require('couch-update-views');
    var path = require('path');

    /*
    *	@params couchdb, url of couchdb
    *	@params dirname, path to directory containing the json documents of views
    *	@params test, boolean to specify if it should test for differences in the view. If true, a message will be print indicating that there are differences *	in the documents. If false or undefined, whenever there are differences in the document, the view will be pushed to couchdb. 
    */
    couchUpdateViews.migrateUp(conf.couchdb, conf.dirname, true)
    .then(function(res){
        console.log(res);//result of the operation
    });

    //Other server logic, routes etc.
}