如何在NeDB中实现持久存储?

时间:2013-10-11 10:10:11

标签: node.js node-webkit

我在node-webkit中尝试过NeDB,它在内存数据上运行良好,但无法存储在持久存储中。

2 个答案:

答案 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-datanode-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