繁体   English   中英

有没有办法删除 PouchDB 中的所有数据库(没有给定名称)

[英]Is there a way to delete all databases (without given names) in PouchDB

我想创建一个函数来重置所有内容并初始化我的 webapp。 由于我有几个生成的名称数据库,我只想将它们全部删除。

有没有办法做类似PouchDB.destroyAll()事情?

直接使用 PouchDB 是不可能的,但您可以使用以下代码段来完成:

indexedDB.webkitGetDatabaseNames().onsuccess = (e) => {
  for(let i = 0; i < e.target.result.length; i++){
    let db = e.target.result[i];
    if(db.startsWith('_pouch_')){
      indexedDB.deleteDatabase(db);
    }
  }
};

这假设您在 chrome 中使用 PouchDB 和 indexedDB。 如果不是这种情况,您必须调整上述代码以与您使用的任何存储引擎和浏览器/服务器一起工作。

我建议通过使用PouchDB allDbs() 插件pouchy 的方式来做,因为它在使用不同的数据库适配器时工作。

例如

try {
   const dbs = PouchDB.allDbs();
   // dbs is an array of strings, e.g. ['mydb1', 'mydb2']
   // delete the databases by name or whatever.
} catch(err) {
}

destroy()方法很方便,参见销毁数据库

从开发人员的角度,请参阅删除本地数据库

IndexedDB:webkitGetDatabaseNames 已从 chrome 中删除,请参阅 -> https://www.chromestatus.com/feature/5725741740195840

同意直接使用 PouchDB 是不可能的,您可以使用以下方法来完成。


export const deletePouchDB = async() =>{
    const dbs = await window.indexedDB.databases();
    dbs.forEach(db => {
        if (db.name.includes('_pouch_')) {
            window.indexedDB.deleteDatabase(db.name);
        }
    });
};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM