如何使用electron和pouchdb创建持久的脱机数据库

时间:2016-11-07 19:05:13

标签: mongodb couchdb electron pouchdb nosql

我打算写一个桌面应用程序,它应该能够在本地存储大量数据。

我想用electron编写该应用。之后,我想将应用程序移植到移动设备上。我正在尝试使用nativescript和angular-advanced-seed试图在不同平台上重用代码。

作为数据库工具,我想使用pouchdb,因为我不想让用户设置/安装额外的工具来为桌面应用程序单独运行数据库。

另外,我喜欢使用pouchdb,因为它具有couchdb这个很好的同步功能,当需要与在线数据库同步时,我可以在项目的后期使用它。

现在我的问题

  1. 即使应用程序已被用户停止,我如何使用pouchdb在本地存储数据(可能是超出localstorage限制的大量数据)。当用户下次启动桌面应用程序时,我需要在应用程序中加载该数据。我使用leveldb阅读有关pouchdb的信息,但我无法找到数据。

  2. 电子是否有可能在电子应用程序内部运行数据库,所以我不需要在用户的pc / mobile应用程序上安装例如mongodb?

  3. 如果有一个可以在移动设备(ios / android)上运行的解决方案也会很不错,这样我就可以在不使用不同方法进行数据存储的情况下拥有离线功能

    < / LI>
  4. 是否有其他数据库工具的解决方案(组合)可以满足我的需求:A。海量数据的离线存储功能相同,超过了本地存储&#39;桌面(电子)/移动(Android / IOS)和Web和B.的空间限制对于在线挂件数据库的良好同步功能,如(pouchdb / couchdb或minimongo / mongodb)C。应用程序内数据库应具有相同的查询api喜欢服务器数据库(minimongo / mongodb)

  5. 提前为你的tipps。

2 个答案:

答案 0 :(得分:2)

听起来像pouchdb-server可以满足您的需求:https://github.com/pouchdb/pouchdb-server

答案 1 :(得分:1)

Pouchdb-Server有效。我的应用设置为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而不是Angular,只需像上面那样访问服务器。