是否可以使用 db.close()
关闭与 PouchDb 的连接,然后再次重新打开相同的数据库连接?
我有一个应用程序,其中可以将每个用户分配到多个组,每个组都有自己的数据库。为了允许用户切换组(和数据库),我想关闭当前数据库 - 用户刚刚离开的数据库 - 以避免内存泄漏。问题是当用户返回到第一个组时 - 它已关闭并且复制不起作用。如何"重新打开"它?
我在文档中的任何地方都找不到重新打开数据库的选项。我确实尝试使用以下方法创建一个新的 PouchDB 实例:
new PouchDB(uniqueId)
但是我以前工作的复制在关闭数据库后不再有反应。
我在这里错过了什么?
谢谢
重新打开数据库的方式与第一次打开数据库的方式完全相同:
var db = new PouchDB("dbname");
此时,您必须重新启动任何复制。
如果您确实想在同一变量实例化中重新打开或重置已关闭/已销毁的数据库,则可以调用构造函数。请注意,再次调用构造函数绝对不是好的做法,但这是我可以让 PouchDb 在这个问题上合作的唯一方法。我使用它在测试之间重置我的数据库,同时仍然能够重用相同的变量。
export async function resetTestDb(
db: PouchDB.Database & {
__opts?: PouchDB.Configuration.DatabaseConfiguration;
_destroyed?: boolean;
_closed?: boolean;
}
): Promise<PouchDB.Database> {
await db.destroy().catch(() => {});
// nasty hack to reopen closed database
delete db._destroyed;
delete db._closed;
return db.constructor(db.name, db.__opts);
}