Skip to content

Instantly share code, notes, and snippets.

@anandology
Created November 4, 2010 09:39
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save anandology/662282 to your computer and use it in GitHub Desktop.
Save anandology/662282 to your computer and use it in GitHub Desktop.
node.js script to process couchdb output
#!/usr/bin/env node
// Sample usage:
//
// $ curl -s 'http://127.0.0.1:15984/seeds/_all_docs?limit=10&include_docs=true' | coucheval.js 'console.log(JSON.stringify(row.doc));'
//
var carrier = require('carrier');
var stdin = process.openStdin();
stdin.setEncoding('utf8');
var couchparse = function(callback) {
var firstline = true;
carrier.carry(stdin, function(line) {
// skip first line
if (firstline) {
firstline = false;
return;
}
// skip last line
if (line.substr(0, 2) == "]}") {
return;
}
if (line[line.length-1] == ",")
line = line.substr(0, line.length-1);
callback(line);
});
};
couchparse(function(line) {
var row = JSON.parse(line);
eval(process.argv[2]);
});
@dennisg
Copy link

dennisg commented Nov 5, 2010

nice work!

A small addition: on Mac OS X, the line that is parsed contains a '\r' at the end of each line. To make it work, I added:

    if (line[line.length-1] == "\r") {
        line = line.substr(0, line.length-1);
    }

just before the 'if (line[line.length-1] == ",")' part...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment