var env = require('../env') , upgradeCouch = require('../config/upgrade-couchdb') , cryptoken = require('../util/crypto-token') , HTTPResult = require('../util/http-result') , _ = require('underscore') ; function strip(obj) { var subcoded = false; var res = []; if ( _.isArray(obj) ) { res = _.map(obj,strip); } else if ( _.isObject(obj) ) { if ( obj.type === "Question" ) { _.each(obj.content, function(value,vindex) { switch(value.type) { case "StringInput": case "TextInput": case "NumberInput": if ( !value.subcode ) { value.subcode = '' + vindex; subcoded = true; } break; case "ScaleInput": case "MultipleChoiceInput": _.each(value.items, function(item,iindex) { if ( !item.subcode ) { item.subcode = '' + vindex + iindex; subcoded = true; } }); break; } }); } res = _.map(obj,function(val,key) { if ( val === null || val === "" ) { delete obj[key]; return true; } else { return strip(val); } }); } return subcoded || _.contains(res,true); } upgradeCouch(env.couchServerURL,env.dbName,function(doc){ if ( strip(doc) ) { return doc; } else { return new HTTPResult(-1); } }).then(function(res){ console.log("done",res); }, function(err){ console.error("fail",err); });