2016-11-07 52 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代替角,只是这样做。

相关问题