Skip to content

Instantly share code, notes, and snippets.

@redgeoff
Created August 15, 2014 06:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save redgeoff/6adea59f2428ec58b5ac to your computer and use it in GitHub Desktop.
Save redgeoff/6adea59f2428ec58b5ac to your computer and use it in GitHub Desktop.
pouchdb-bad-remove-promise
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<script src="//cdn.jsdelivr.net/pouchdb/2.2.3/pouchdb.min.js"></script>
</head>
<body>
<script>
var db = new PouchDB('tasks');
function saveTask() {
return db.post({ title: 'take out trash' });
}
function getAndRemove(id) {
return db.get(id).then(function (object) {
return db.remove(object).catch(function (err) {
console.log('error: ' + err); // isn't executed
});
}).catch(function (err) {
console.log('error: ' + err); // isn't executed
});
}
function purge() {
return db.allDocs({include_docs: true}, function (err, doc) {
var promises = [];
doc.rows.forEach(function (el, i) {
promises.push(getAndRemove(el.doc._id));
});
return Promise.all(promises);
});
}
function printAllDocs() {
return db.allDocs({ include_docs: true }, function (err, doc) {
console.log(doc);
});
}
saveTask().then(function () {
purge().then(function () {
printAllDocs(); // contains 1 doc, but shouldn't it be empty?
setTimeout(function () {
printAllDocs(); // is empty as expected
}, 2000);
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment