在Electron中设置IndexedDB存储位置

时间:2019-01-08 03:56:43

标签: webpack electron indexeddb localforage

我有一个电子Webpack应用程序,我想用它在本地保存数据。我正在尝试使用localForage / IndexedDB作为后备存储,但是我的开发周期遇到了一些问题。特别是,当我完全退出电子应用程序并重新启动它之后,似乎无法加载以前持久保存的数据。但是,可以通过热模块重新加载来重新加载应用程序。

我进行了一些挖掘,看起来IndexedDB每次启动应用程序时都会创建一个具有host:port对的目录:

(env) vishalkuo@Vishal's Macbook Pro client $ ll ~/Library/Application\ Support/Electron/IndexedDB/
total 0
8599832812 0 drwx------   7 vishalkuo  staff   224B  7 Jan 19:45 http_localhost_60612.indexeddb.leveldb
8599835990 0 drwx------   8 vishalkuo  staff   256B  7 Jan 22:33 http_localhost_58090.indexeddb.leveldb
8599836127 0 drwx------   7 vishalkuo  staff   224B  7 Jan 22:33 http_localhost_58692.indexeddb.leveldb
8599832810 0 drwx------   6 vishalkuo  staff   192B  7 Jan 22:34 .
8599836209 0 drwx------   7 vishalkuo  staff   224B  7 Jan 22:34 http_localhost_58788.indexeddb.leveldb

,端口似乎与正在运行的webpack-dev-server一致。

我想知道IndexedDB或localForage是否有任何选择来绕过这种命名策略,而有利于用户(如果有的话),或者我是否应该寻找其他存储策略

1 个答案:

答案 0 :(得分:0)

我今天遇到了这个问题,我找到了这篇文章。也许这对将来的某人有用。在 app.on("ready", createWindow); 之前的主进程中,我添加了:app.setPath("userData", "DB_NEW_LOCATION");

如果您想在构建后保留数据,请不要忘记在 package.json 中添加 "extraFiles": ["DB_NEW_LOCATION"/**/*"]