在 Electron 中更改 PouchDB 目录答案

作者: 分类: 编程代码 时间:1970-01-01

在 Electron 中更改 PouchDB 目录答案

Change PouchDB directory in Electron在 Electron 中更改 PouchDB 目录

我想在我的 Electron 应用程序中更改 PouchDB 目录。当我更新我的APP(重新安装)时,我的所有数据都被破坏了。

所以,我想更改我的 PouchDB 目录,以便在重新安装我的应用程序时不删除我的数据。

我的代码:

import PouchDB from 'pouchdb';
const Presentation = new PouchDB('~/test/db');

这会返回一个错误:

err {类型:“OpenError”,名称:“OpenError”,原因:错误:IO 错误: ~/test/db/LOCK: Aucun fichier ou dossier de ce type, message: "IO 错误:~/test/db/LOCK: Aucun fichier ou dossier de ce type",堆栈: “OpenError: IO 错误: ~/test/db/LOCK: Aucun fichier…es/abstract-leveldown/abstract-leveldown.js:39:16"}

有谁知道当我重新安装 Electron 应用程序时如何更改我的目录或不删除我的数据?

感谢社区!

【问题讨论】:

标签: node.js electron pouchdb


【解决方案1】:

~ 是一个称为“波浪号扩展”的 Bash 功能。这是壳的功能,电子无法处理它。请改用 new PouchDB('./test/db') 记录。

您可以使用pouchdb-dump-cli 包导出数据库转储,然后使用pouchdb-load 包导入。

【讨论】:

  • 谢谢奥列格。对于 dump-cli,我可以从 Electron App 中的 javascrilt 文件执行命令?
  • pouchdb-replication-stream 更适合在应用程序源代码中使用。 dump-cli 用作终端命令
【解决方案2】:

发生 IO 错误是因为 pouch db 无法在指定位置创建文件夹。 Electron 应用程序通常需要在 appData + appName 位置存储配置、本地 db 文件。此位置对应用程序具有完全访问权限。

const appName='<Electron App Name>'
const db = new PouchDB(
    path.join(app.getPath('appData'), appName, "db")
  );

参考:

  • https://www.electronjs.org/docs/latest/api/app#appgetpathname
  • https://github.com/sindresorhus/electron-store

【讨论】: