0.1.1 • Published 11 years ago
couch-migrate v0.1.1
couch-migrate
View based CouchDB migration utility. Handles batching and conflict retries.
Usage
var couchMigrate = require('couch-migrate');
couchMigrate({
database: nanoDb,
// Source view query information.
sourceDesignDoc: 'migrations',
sourceView: 'user_migration1',
sourceParams: {group: true},
// Optional. Takes a view row and returns true if it should
// be migrated.
sourceFilter: function(row) {
return row.value.parent_id !== null;
},
// Optional. Takes a view row and returns related doc _id's
// to fetch.
fetchKeys: function(row) {
return [
'user:' + row.value.id,
'user:' + row.value.parent_id
];
},
// Takes view row and related docs returns couchdb document
// changes with same format as used in batch post.
changes: function(row, docs) {
var child = docs[0];
var parent = docs[0];
parent.children = parent.children || [];
parent.children.push(child.id);
child.parent_name = parent.name;
return [child, parent];
},
// Called when migration is finished.
// Defaults to logging error and exiting process.
complete: function(err) {},
// How many rows to process with couchdb batch operations.
batchSize: 20,
// In case of conflict, how many times to retry migration for each row.
retries: 2
});