Skip to content

Instantly share code, notes, and snippets.

@Aybee5
Last active December 15, 2020 10:25
Show Gist options
  • Select an option

  • Save Aybee5/31f1733e3f8292d8c36c14e78dc9803e to your computer and use it in GitHub Desktop.

Select an option

Save Aybee5/31f1733e3f8292d8c36c14e78dc9803e to your computer and use it in GitHub Desktop.
Recover deleted documents in couchdb using javascript
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment