我想在单元测试期间反复创建和删除具有相同名称(' Test')的PouchDB数据库。但是如果我在删除之前将至少一个文档添加到数据库中,那么下次我尝试创建它时会出现错误:
"未捕获NotFoundError:无法执行' objectStore' on' IDBTransaction':未找到指定的对象库。"
这发生在pouchdb.js:1950:
var docStore = transaction.objectStore(DOC_STORE); // PouchDB 3.0.6
然后,如果我查看IndexedDB,数据库确实存在,但只有以下信息:
Security origin:http://localhost:8000
Name:_pouch_Test
Integer Version:1
String Version:
然后,如果我尝试删除此数据库,Angular会抛出一个' CustomPouchError',这是我无法追溯的。
以下是我的应用中的相关代码段:
var db = new PouchDB(dbName, function(err, result) {
if (!err) {
$log.info('Database \'' + dbName + '\' opened'); // Happens when I first create 'Test'
} else {
$log.info('Database \'' + dbName + '\' failed to open'); // Happens when I try to re-create 'Test'
}
});
db.destroy(function (err, info) {
if (err) {
$log.error(err);
} else {
$log.info("Database destroyed"); // Happens when I delete 'Test'
}
});
但如果我在向其添加任何文档之前删除数据库,它会从IndexedDB中消失,然后我可以再次创建它。
感谢您的帮助。
答案 0 :(得分:1)
找到了解决方法。在销毁之后,在"然后"中创建一个新的PouchDB对象。功能。下次使用它时工作正常。 例如
{{1}}