javascript 是否可以在PouchDB中“重新打开”已关闭的数据库

7cjasjjr  于 2023-04-04  发布在  Java
关注(0)|答案(2)|浏览(98)

是否可以使用db.close()关闭与PouchDb的连接,然后重新打开相同的db连接
我有一个应用程序,其中每个用户可以被分配到多个组,每个组都有自己的数据库。为了允许用户切换组(和数据库),我想关闭当前数据库-用户刚刚离开的数据库-以避免内存泄漏。问题是当用户返回到第一个组时-它已关闭,复制不工作。我如何“重新打开”它?
我在文档中找不到重新打开数据库的选项。我尝试创建一个新的PouchDB示例,方法是:

new PouchDB(uniqueId)

但我以前工作的复制在关闭数据库后没有React。
我错过了什么?
谢谢你

blpfk2vs

blpfk2vs1#

重新打开数据库的方式与第一次打开数据库的方式完全相同:

var db = new PouchDB("dbname");

此时必须重新启动所有复制。

wfsdck30

wfsdck302#

如果你真的想在同一个变量示例化中重新打开或重置一个关闭/销毁的数据库,你可以调用构造函数。注意,再次调用构造函数绝对不是一个好的做法,但这是我能让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);
}

相关问题