我在node-webkit中尝试过NeDB,它在内存数据上运行良好,但无法存储在持久存储中。
答案 0 :(得分:6)
绝对没有node-webkit或nedb专家,但这就是我做到的方式,并且有效。
正如mvanderw在评论中已经提到的,一定要确保检查自动加载选项。
这是我对一个简单的node-webkit / angular todo app的配置:
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
}
});
像这样......
答案 1 :(得分:1)
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