2016-11-07 88 views
4

我打算編寫一個桌面應用程序,該應用程序應該能夠在本地存儲其海量數據持久性。如何使用electron和pouchdb創建持久的脫機數據庫

我想用electron寫這個應用程序。後來,我想將應用程序移植到移動設備上。我正在嘗試使用nativescript和angular-advanced-seed,它試圖使在不同平臺上重用代碼成爲可能。

作爲數據庫工具,我想使用pouchdb因爲我不想讓用戶設置/安裝一個額外的工具,讓桌面應用程序單獨運行一個數據庫。

另外,我喜歡使用pouchdb,因爲它具有couchdb這個很好的同步功能,當我需要與在線數據庫同步時,我可能會稍後在項目中使用它。

現在我的問題

  1. 如何使用pouchdb在本地存儲數據(也可以是數據的質量超出localStorage的限制),即使該應用程序已被用戶停止。當用戶下次啓動桌面應用程序時,我需要在應用程序中加載該數據。我使用leveldb閱讀了pouchdb,但是我找不到數據保存。

  2. 電子有可能在電子應用程序中運行數據庫,所以我不需要在用戶PC /移動應用程序上安裝例如mongodb?

  3. 這將是很好有一個解決方案,將移動(IOS/Android的)工作過,所以我有離線功能也有不使用不同的方法對數據存儲

  4. 是有數據庫工具的其他解決方案(組合)可以滿足我的需求:A.海量數據的相同離線存儲能力超過了本地存儲對桌面(電子)/移動(Android/IOS)和Web和B的空間限制。 (pouchdb/couchdb或minimongo/mongodb)C.應用程序內數據庫應該具有與服務器數據庫相同的查詢API(minimongo/mongodb)

thx提前爲你的tipps。

+0

如果您能找到任何解決方案,請分享。我面臨同樣的問題?謝謝。 –

回答

0

Pouchdb - 服務器的作品。我有一個應用程序設置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); 

然後,我只是在您的index.html文件中獲得這個。

<script type="text/javascript">require('./pouchdb-app.js');</script> 

電子開始拉動index.html併爲您啓動pouchdb。

目前,我試圖讓rxdb工作。

注:

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

取消上述用於生產。有關它的信息,請參閱fauxton


剛剛實現,如果你檢查出RxDB的電子example。它將幫助你通過使用concurrently來運行Pouchdb-Server(如果你不想使用快速應用程序)。

從例子中,的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" 

你,那麼,可以像我一樣上面來訪問服務器使用PouchDB代替角,只是這樣做。

相關問題