Created
September 1, 2015 01:25
-
-
Save DTAIEB/1718a19ad248bacfdba5 to your computer and use it in GitHub Desktop.
Delete all documents from a Cloudant view
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var async = require("async"); | |
var _ = require("lodash"); | |
function deleteDocsFromView( db, designName, viewName, callback){ | |
async.waterfall([ | |
function( callback ){ | |
db.view(designName, viewName, function(err, data) { | |
if ( err ){ | |
return callback( err ); | |
} | |
var docs = _.map( data.rows, function( row ){ | |
return {id: row.id || row.value._id, rev: row.value.rev||row.value._rev}; | |
}); | |
return callback( null, docs ); | |
}); | |
}, | |
function( docs, callback ){ | |
if ( docs.length == 0 || docs[0].rev ){ | |
//We either have no docs to delete, or rev is already retrieved | |
return callback( null, docs ); | |
} | |
//Call bulk api to fetch revs | |
db.fetchRevs( { keys: _.map( docs, function(doc){ | |
return doc.id; | |
})}, function( err, body ){ | |
if ( err ){ | |
return callback( err ); | |
} | |
return callback( null, _.map(body.rows, function( row ){ | |
return {id:row.id, rev: row.value.rev}; | |
})); | |
}); | |
}, | |
function( docs, callback ){ | |
//Delete all docs one by one | |
async.each( docs, function( doc, callback ){ | |
db.destroy( doc.id, doc.rev, callback ); | |
}, function( err ){ | |
return callback( err ); | |
}); | |
}], | |
function( err, results ){ | |
return callback( err, results ); | |
} | |
); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment