var Q = require('q') , _ = require('underscore') , tv4 = require('tv4') , CouchDB = require('../util/couch').CouchDB ; var schema = require('./couchdb-schema'); module.exports = function(couchDbURL) { var server = new CouchDB(couchDbURL); var designRe = /^_design\//; return server.get('/_all_docs') .then(function(allDocs){ return _.chain(allDocs.rows) .filter(function(doc){ return doc.id.match(designRe) === null; }) .reduce(function(memo, doc){ return memo.then(function(result){ return server.get(doc.id) .then(function(doc){ var valid = tv4.validateResult(doc,schema); result[doc._id] = valid; return result; }); }); }, Q.resolve({})) .value(); }).all(); };