function recover(num) { docId = app[num] console.log(`${dbendpoint}/${dbName}/${docId}/?revs=true&open_revs=all`) axios .get(`${dbendpoint}/${dbName}/${docId}/?revs=true&open_revs=all`) .then((result) => { data = JSON.parse( result.data.substring( result.data.indexOf("{"), result.data.lastIndexOf("}") + 1 ) ); let prerev = data._revisions["start"] - 1; let postrev = data._revisions.ids[1]; return (revNum = prerev + "-" + postrev); }) .then((revNum) => { return axios.get(`${dbendpoint}/${dbName}/${docId}/?rev=${revNum}`); }) .then((deletedDoc) => { delete deletedDoc.data._rev; return deletedDoc.data; }) .then((deletedDoc) => { return axios.put(`${dbendpoint}/${dbName}/${docId}`, deletedDoc); }) .then((data) => { let message = `${docId} restored sucessfully`; success.push(message); }) .catch((err) => { let message = `${docId} restoring failed, ${err}`; failure.push(message); }) .finally(()=>{ nextNum = num+1 if (nextNum < lastNum) { recover(nextNum) } else { return console.log({success, failure}); } }) } recover(0)