electron RxDB -使用现有的本地DB

6ie5vjzr  于 2023-09-28  发布在  Electron
关注(0)|答案(2)|浏览(155)

案例

如何打开现有数据库?

问题

我已经用RxDB.create()创建了一个数据库,并创建了一些集合,在其中放入了一些文档。因此,在另一个脚本中,我想打开该数据库来执行一些查询,但我不知道如何操作。我尝试使用相同数据库名称的RxDB.create(),但它创建新数据库并覆盖上面创建的数据库。

代码示例

const database = await createRxDatabase({
    name: path.join(app.getPath('userData') + '/db'),
    adapter: leveldown, // the full leveldown-module
    multiInstance: false,
  });

我只是没有看到适当的方法来检查.ldb文件是否存在,以及如何在不创建新文件的情况下获取对rxdb数据库对象的引用。

信息

工作环境:电子
适配器:LevelDB
堆栈:React
Packages:“rxdb”:“9.5.0”,“leveldown”:“5.6.0”,*“pouchdb-adapter-leveldb”:“7.2.2”

wa7juj8i

wa7juj8i1#

太晚了,但值得分享,因为关于rxdb的参考文献太少了
找到了react-native(iOS/Android)的解决方法(rxdb 11.6.0)
对我来说效果很好,数据仍然是持久的

// database instance to be used throughout the runtime
let rxDB: RxDatabase<AppCollections>;

async function createRxDatabaseAsync() {
  // re-create RxDatabase by using the function below 
  // does not override existing data
  rxDB = await createRxDatabase<AppCollections>({
    name: 'mydatabase',
    storage: getRxStoragePouch('react-native-sqlite'),
    ignoreDuplicate: false,
  });
}

export async function initRxDatabaseAsync() {
  if (!rxDB) {
    await createRxDatabaseAsync();
  }

  // make sure we add the collection(s) only one time
  // my case is 'word' collection
  if (!rxDB.word) {
    await rxDB.addCollections({
      word: {
        schema: wordSchema,
      },
    });
  }
  return rxDB;
}
u7up0aaq

u7up0aaq2#

RxDB.create()
使用上述相同的参数将做的工作。
参考-https://github.com/pubkey/rxdb/issues/2453

相关问题