2013-10-11 5 views
2

J'ai essayé NeDB dans node-webkit il fonctionne correctement sur les données de la mémoire, mais pas sur le stockage persistant.Comment obtenir un stockage persistant dans NeDB?

+0

-vous obtenez des erreurs? – robertklep

+0

Besoin de plus d'informations - avez-vous regardé [nedb db loading] (https://github.com/louischatriot/nedb#creatingloading-a-database), en particulier les options 'inMemoryOnly' et' autoload'? –

+0

enfin, j'ai trouvé la base de données est créée dans un autre répertoire le paquet est à: C: \ Users \ Dinesh \ Programmes \ Node-Webkit \ FrameLess le nw.exe est à: C: \ Users \ Dinesh \ Programs \ Node-Webkit \ Package la base de données est enregistrée à un emplacement étrange: C: \ Utilisateurs \ Dinesh \ AppData \ Local \ FrameLess \ nedb-données – Dinesh

Répondre

5

certainement pas de noeud-webkit ou un expert nedb mais c'est comme je l'ai fait et cela a fonctionné.

Comme déjà mentionné par mvanderw dans les commentaires, assurez-vous certainement de vérifier l'option de chargement automatique.

Ceci est par exemple ma configuration pour un simple noeud-webkit/app Todo angulaire:

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

Lorsque je redémarre l'application, tous les todos sont toujours là et je suis prêt à aller.

Hope this helps

Edit: Exemple comme demandé par 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 
    } 
}); 

Quelque chose comme ça ...

+0

par hasard avez-vous publié le code pour votre application todo? J'essaie d'intégrer nedb avec mon application node-webkit et le manque d'exemples fonctionnels est vraiment limitant – Scott

+1

ehm ... peut-être poser une question Stack et un lien pour que je puisse poster avec un formatage correct :) – flaky

+0

:) – flaky

1

C:\Users\Dinesh\AppData\Local\FrameLess\nedb-data est où node-webkit décompressé l'application; Cela signifie que votre application a été empaquetée sous la forme .nw, qui est un fichier zip plus intelligent. En conséquence, il doit être décompressé dans un dossier tmp à exécuter, ce qui explique pourquoi vous avez trouvé votre base de données dans AppData.

Dans votre outil de développement, vous pouvez toujours savoir dans quel dossier votre application a été décompressée en tapant: process.env. Votre propriété TMPDIR est l'emplacement de votre base de données (TMPDIR est une propriété de Mac OS X, elle peut être nommée différemment sous Windows).

Vous pouvez exécuter votre application nw sans l'empaqueter. Fondamentalement, vous pouvez faire glisser votre dossier sur nw.exe; ou en tapant nw.exe yourAppFolder; ou empaquetez votre application en tant que .nw, comme vous l'avez fait.

Lire la ligne directrice suivante une nouvelle fois: https://github.com/rogerwang/node-webkit/wiki/How-to-run-apps

Questions connexes