2014-09-30 67 views
1

我想在單元測試期間反覆創建並刪除一個名稱相同的('Test')PouchDB數據庫。但是,如果在刪除它之前至少向數據庫添加一個文檔,那麼下次嘗試創建它時出現以下錯誤:無法重新創建具有相同名稱的PouchDB數據庫

「未捕獲的NotFoundError:未能在'IDBTransaction'上執行'objectStore':指定沒有找到對象存儲區。「

這發生在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

找到了解決方法。銷燬後,在「then」函數中創建一個新的PouchDB對象。它在你下次使用時很好。例如,

var db = new PouchDB('Xyz'); 

db.destroy().then(function (response) { 
     db = new PouchDB('Xyz'); 
    });