2013-10-11 2 views
2

Я пробовал NeDB в node-webkit, он отлично работает в данных памяти, но не может хранить его в постоянном хранилище.Как добиться постоянного хранения в NeDB?

+0

ли вы получите какие-либо ошибки? – robertklep

+0

Нуждается в дополнительной информации - вы посмотрели [nedb db loading] (https://github.com/louischatriot/nedb#creatingloading-a-database), в частности опции 'inMemoryOnly' и' autoload'? –

+0

Наконец-то я обнаружил, что база данных создана в каком-то другом каталоге пакет находится по адресу: C: \ Users \ Dinesh \ Programs \ Node-Webkit \ FrameLess nw.exe находится по адресу: C: \ Users \ Dinesh \ Programs \ Node-Webkit \ Package база данных сохраняется в каком-то странном месте: C: \ Users \ Dinesh \ AppData \ Local \ FrameLess \ nedb-data – Dinesh

ответ

5

определенно нет узла WebKit или nedb эксперт, но это, как я это сделал, и она работала.

Как уже упоминалось mvanderw в комментариях, обязательно проверьте вариант автозагрузки.

Это, например, моя конфигурация для простого узла WebKit/углового приложения Todo:

var Datastore = require('nedb'),                                    
    path = require('path'), 
    db = new Datastore({ filename: path.join(require('nw.gui').App.dataPath, 'todo.db'), autoload: true }); 

Когда я перезапустить приложение, все Todos все еще там, и я готов идти.

Надеется, что это помогает

Edit: Примера по просьбе Скотта

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 
    } 
}); 

Что-то вроде этого ...

+0

, если бы вы опубликовали код для своего todo-приложения? Я пытаюсь интегрировать nedb с моим приложением node-webkit, и отсутствие рабочих примеров действительно ограничивает – Scott

+1

ehm ... возможно, спросите у Stack Question и ссылку на него, чтобы я мог опубликовать с правильным форматированием :) – flaky

+0

Добавлен пример ответа :) – flaky

1

C:\Users\Dinesh\AppData\Local\FrameLess\nedb-data is node-webkit несжатое приложение; это означает, что ваше приложение было упаковано как .nw, что более разумный zip-файл. Как следствие, его нужно распаковать в папку tmp для выполнения, поэтому вы нашли свой db в AppData.

В вашем инструменте разработчика вы всегда можете узнать, в какую папку было распаковано приложение, набрав: process.env. Свойство TMPDIR - это место, где находится ваш db (TMPDIR - свойство Mac OS X, его можно назвать по-разному в Windows).

Вы можете выполнить свое приложение nw, не упаковывая его. В основном вы можете перетащить свою папку на nw.exe; или введите nw.exe yourAppFolder; или упакуйте приложение как .nw, как и вы.

Прочитайте следующую директиву еще раз: https://github.com/rogerwang/node-webkit/wiki/How-to-run-apps

Смежные вопросы