强制 NeDB 使用 Electron 创建本地文件
Force NeDB to create local file with Electron
我在我的 Electron 应用程序中使用 NeDB React.js 来持久存储一些任务和项目。我正在一个名为 Database.js
.
的文件中初始化两个 DataStores
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 数据存储,我真的不知道为什么会这样。有没有人建议为什么会这样?
提前致谢:)
编辑
当我在主进程中创建数据存储时,会创建文件。难道我在渲染器进程中没有访问文件系统的权限?
我也是 Electron 的新手,但据我从文档和教程中收集到的信息,与数据库的交互应该在主进程中完成。然后,您应该使用 ipc 或 remote 在渲染器进程和主进程之间进行通信。反正我就是这样设置的。
我使用 ipc 将带有查询等的事件从我的渲染器发送到我的主渲染器,然后以相同的方式将结果发回。这还允许您在应用程序的多个位置监听相同的数据更改。 (例如,当我从联系人中删除 'favourite' 状态时,该组件会更新,但我也可以同时在我最喜欢的列表中收听更新以重新加载它,以便它是最新的)
我是通过在 main.js 中创建数据存储并将其作为全局对象共享来实现的。所以我可以在渲染器进程中使用它,但它仍在创建一个 json 文件作为存储而不是 indexedDb 左右。
如果使用 vue-cli3,请在 vue.config.js
中添加此 webpack 选项:
configureWebpack: {
target: 'electron-main'
}
然后将创建一个本地文件,而不是使用浏览器的 indexdb。
我在我的 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 数据存储,我真的不知道为什么会这样。有没有人建议为什么会这样?
提前致谢:)
编辑
当我在主进程中创建数据存储时,会创建文件。难道我在渲染器进程中没有访问文件系统的权限?
我也是 Electron 的新手,但据我从文档和教程中收集到的信息,与数据库的交互应该在主进程中完成。然后,您应该使用 ipc 或 remote 在渲染器进程和主进程之间进行通信。反正我就是这样设置的。
我使用 ipc 将带有查询等的事件从我的渲染器发送到我的主渲染器,然后以相同的方式将结果发回。这还允许您在应用程序的多个位置监听相同的数据更改。 (例如,当我从联系人中删除 'favourite' 状态时,该组件会更新,但我也可以同时在我最喜欢的列表中收听更新以重新加载它,以便它是最新的)
我是通过在 main.js 中创建数据存储并将其作为全局对象共享来实现的。所以我可以在渲染器进程中使用它,但它仍在创建一个 json 文件作为存储而不是 indexedDb 左右。
如果使用 vue-cli3,请在 vue.config.js
中添加此 webpack 选项:
configureWebpack: {
target: 'electron-main'
}
然后将创建一个本地文件,而不是使用浏览器的 indexdb。