有没有办法删除 PouchDB 中的所有数据库(没有给定名称)
Is there a way to delete all databases (without given names) in PouchDB
我想制作一个功能来重置所有内容并初始化我的网络应用程序。因为我有几个生成的名称数据库,所以我想将它们全部删除。
有没有办法做类似 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。如果不是这种情况,您将不得不调整上述代码以适用于您正在使用的任何存储引擎和 browser/server。
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);
}
});
};
我建议使用 PouchDB allDbs() plugin 以松软的方式进行操作,因为它在使用不同的数据库适配器时有效。
例如
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()
方法好用,见Destroying a database
从开发人员的角度来看,请参阅 Deleting your local database
我想制作一个功能来重置所有内容并初始化我的网络应用程序。因为我有几个生成的名称数据库,所以我想将它们全部删除。
有没有办法做类似 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。如果不是这种情况,您将不得不调整上述代码以适用于您正在使用的任何存储引擎和 browser/server。
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);
}
});
};
我建议使用 PouchDB allDbs() plugin 以松软的方式进行操作,因为它在使用不同的数据库适配器时有效。
例如
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()
方法好用,见Destroying a database
从开发人员的角度来看,请参阅 Deleting your local database