3

我在我的 Electron 应用程序中使用 NeDB 和 React.js 来持久存储一些任务和项目。我在一个名为Database.js.

this.taskCollection = new Datastore({
        filename:'./tasks.json',
        autoload: true,
        timestampData: true,
    });

    this.projectCollection = new Datastore({
        filename:'./projects.json',
        autoload: true,
        timestampData: true,
    });

然后我在我的 React-App 中导入文件。这发生在 Electron 的渲染器进程中。我使用filename属性强制 NeDB 创建一个名为tasks.json和的两个本地文件projects.json。假设 NeDB 的文档应该在当前目录中创建两个提到的文件,但它们没有被创建。NeDB 只是创建IndexedDB数据存储,我真的不知道为什么会这样。有没有人建议为什么会这样?

提前致谢 :)

编辑

当我在主进程中创建数据存储时,会创建文件。可能是我无权访问渲染器进程中的文件系统吗?

4

3 回答 3

3

我对 Electron 也很陌生,但据我从文档和教程中收集到的,与数据库的交互应该在主进程中完成。然后,您应该使用 ipc 或 remote 在您的渲染器进程和您的主进程之间进行通信。反正我就是这样设置的。

我使用 ipc 将带有查询等的事件从我的渲染器发送到我的主渲染器,然后以相同的方式将结果发送回。这还允许您在应用程序的多个位置监听相同的数据更改。(例如,当我从联系人中删除“最喜欢”状态时,该组件会更新,但我也可以同时在我最喜欢的列表中收听更新以重新加载它,以便它是最新的)

于 2016-12-22T10:26:29.437 回答
1

我通过在 main.js 中创建数据存储并将其作为全局对象共享来做到这一点。所以我可以在渲染器进程中使用它,但它仍然创建一个 json 文件作为存储而不是 indexedDb 左右。

于 2017-01-28T17:21:16.180 回答
0

如果使用 vue-cli3,请在以下位置添加此 webpack 选项vue.config.js

configureWebpack: {
  target: 'electron-main'
}

然后将创建一个本地文件,而不是使用浏览器的 indexdb。

请参阅:https ://webpack.js.org/configuration/target/

于 2019-01-21T19:04:25.033 回答