是否可以在PouchDB中'reopen'封闭的数据库



是否可以使用 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);
}

相关内容

  • 没有找到相关文章

最新更新