我在 node-webkit 中尝试了 NeDB,它在内存数据中运行良好,但无法存储在持久存储中。
2 回答
绝对没有 node-webkit 或 nedb 专家,但我就是这样做的,而且效果很好。
正如 mvanderw 在评论中已经提到的,一定要检查自动加载选项。
例如,这是我对一个简单的 node-webkit/ angular todo 应用程序的配置:
var Datastore = require('nedb'),
path = require('path'),
db = new Datastore({ filename: path.join(require('nw.gui').App.dataPath, 'todo.db'), autoload: true });
当我重新启动应用程序时,所有待办事项都还在,我准备好了。
希望这可以帮助
编辑: Scott 要求的示例
var Datastore = require('nedb'),
path = require('path'),
db = new Datastore({
filename:path.join(require('nw.gui').App.dataPath, 'todo.db'),
autoload: true
});
var todoServices = angular.module('todoServices', []);
todoServices.factory('Todo', function($q) {
return {
getAll: function(){
var defer = $q.defer();
db.find({
//...some criteria
},
function(err, docs) {
defer.resolve(docs);
});
return defer.promise;
}, //...moar code
}
});
像这样的东西...
C:\Users\Dinesh\AppData\Local\FrameLess\nedb-data
是node-webkit
应用程序未压缩的位置;这意味着您的应用程序已打包为.nw
,这是一个更智能的 zip 文件。因此,它必须解压缩到 tmp 文件夹中才能执行,这就是您在AppData
.
在您的开发人员工具中,您始终可以通过键入以下命令知道您的应用程序已解压缩到哪个文件夹:process.env
。您的TMPDIR
属性是您的数据库所在的位置(TMPDIR
是 Mac OS X 属性,它在 Windows 上的命名可能不同)。
nw
您可以在不打包的情况下执行您的应用程序。基本上你可以把你的文件夹拖到nw.exe
; 或打字nw.exe yourAppFolder
;或将您的应用程序打包为.nw
,就像您所做的那样。
再次阅读以下指南:https ://github.com/rogerwang/node-webkit/wiki/How-to-run-apps