无法重新创建具有相同名称的PouchDB数据库

时间:2014-09-30 01:25:00

标签: pouchdb

我想在单元测试期间反复创建和删除具有相同名称(' 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中消失,然后我可以再次创建它。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

找到了解决方法。在销毁之后,在"然后"中创建一个新的PouchDB对象。功能。下次使用它时工作正常。 例如

{{1}}