2016-11-07 2 views
4

Ich werde eine Desktop-App schreiben, die in der Lage sein sollte, seine Massendaten persistent und lokal zu speichern.Wie erstellt man eine persistente Offline-Datenbank mit Elektron und pouchdb

Ich möchte diese App mit electron schreiben. später möchte ich die app auf mobile portieren. Ich experimentiere hier mit nativescript und der angular-advanced-seed, die versucht, Code auf verschiedenen Plattformen wiederzuverwenden.

Als Datenbank-Tool möchte ich pouchdb verwenden, weil ich nicht wollte, dass der Benutzer ein zusätzliches Tool für die Erstellung einer Datenbank für die Desktop-App installiert/installiert, die separat ausgeführt wird.

Auch ich mag es, pouchdb zu verwenden, weil es diese nette Synchronisierungsfunktion mit couchdb hat, die ich möglicherweise später im Projekt verwenden kann, wenn die Notwendigkeit für die Synchronisierung mit einer Online-Datenbank entstehen wird.

Nun meine Fragen

  1. , wie ich pouchdb Daten speichern lokal verwenden können (es kann eine Masse von Daten sein, die die localstorage Grenze überschreitet), auch wenn die App vom Benutzer abgebrochen wurde. Ich muss diese Daten in der App laden, wenn der Benutzer die Desktop-App das nächste Mal startet. Ich lese über powerbd mit leveldb, aber ich kann die Daten nicht finden.

  2. ist es im electron möglich, eine datenbank innerhalb der electron-app laufen zu lassen, damit ich zum beispiel mongodb nicht auf der pc/mobile app des anwenders installieren muss?

  3. es wäre schön, eine Lösung zu haben, die auf mobilen (ios/android) funktioniert auch so, dass ich die Offline-Funktionen auch dort haben, ohne einen anderen Ansatz für die Datenspeicherung mit

  4. Sind Es gibt noch andere Lösungen (Kombinationen von) Datenbank-Tools, um meine Bedürfnisse zu befriedigen: A. selbe Offline-Storage-Funktionen für Massendaten, die lokalen Speicherplatz Einschränkungen für Desktop (Elektron)/Mobile (Android/IOS) und Web und B. gute Synchronisation übersteigt -Funktion zur Online-Pendant-Datenbank wie (pouchdb/couchdb oder minimongo/mongodb) C. In-App-Datenbank sollte die gleiche Abfrage api wie die Server-Datenbank haben (Minimongo/Mongodb)

thx im voraus für ihre tipps.

+0

wenn Sie in der Lage waren, eine beliebige Lösung zu finden. Ich stehe vor demselben Problem? Vielen Dank. –

Antwort

0

Pouchdb-Server funktioniert. Ich habe ein App-Setup mit express-pouchdb.

'use strict' 

console.log('Starting PouchDB...'); 

const express = require('express'); 
const PouchDB = require('pouchdb'); 
const app = express(); 

app.use('/', require('express-pouchdb')(PouchDB.defaults({prefix: '.db/'}), { 
     overrideMode: { 
     include: ['routes/fauxton'] 
     } 
    }) 
); 

app.listen(3000); 

Dann erhalte ich dies nur in Ihrer index.html Datei.

Electron beginnt gezogen die index.html und startet pouchdb für Sie.

Derzeit versuche ich rxdb zu arbeiten.

Hinweis:

overrideMode: { 
    include: ['routes/fauxton'] 
} 

die oben entfernen für die Produktion. Informationen dazu finden Sie unter fauxton.


Nur realisiert, wenn Sie RxDBs Elektron example auschecken. Es wird Ihnen helfen, nur Pouchdb-Server (wenn Sie die Express-App nicht wollen) durch concurrently laufen zu lassen.

Aus dem Beispiel package.json:

"scripts": { 
    "start": "concurrently \"npm run server\" \"npm run electron\"", 
    "electron": "electron .", 
    "server": "pouchdb-server --host 0.0.0.0 -p 10102 -m -d /tmp/pouchdb-server/ -n true" 

Sie können dann verwenden PouchDB statt Winkel- und tun genau das gleiche wie ich oben habe auf den Server zuzugreifen.

Verwandte Themen