【问题标题】:pouchdb - secure replication with remote LevelDBpouchdb - 使用远程 LevelDB 进行安全复制
【发布时间】:2018-10-02 14:36:38
【问题描述】:

我热衷于在浏览器内存中为 Angular 应用程序使用 PouchDB。这个 PouchDB 将复制 来自 一个远程 LevelDB 数据库,该数据库从算法中获取键值对。所以,在远程端,我会安装PouchDB-Server。在本地端,我会在 node 提示符下执行以下操作(如 here 所述)。

var localDB = new PouchDB('mylocaldb')
var remoteDB = new PouchDB('https://remote-ip-address:5984/myremotedb')
localDB.sync(remoteDB, {
  live: true
}).on('change', function (change) {
  // yo, something changed!
}).on('error', function (err) {
  // yo, we got an error! (maybe the user went offline?)
});

我们如何启动一个支持 TLS 进行实时复制的 PouchDB 实例,如上面 sn-p 中所述? 如何启动支持 TLS 进行实时复制的 PouchDB 实例?

【问题讨论】:

    标签: ssl replication pouchdb


    【解决方案1】:

    对不起,我误解了你的问题。我以为你打算通过HTTPS 连接到带有 PouchDB 的 CouchDB 服务器。因此,以下答案实际上没有回答您的问题。


    我创建了一个如下所示的server.js 文件以通过HTTPS 与我的CouchDB 进行通信。请注意,SSL 证书(在我的情况下)是自签名的,并且 CouchDB 在TLS 的情况下默认侦听端口6984

    process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; // Ignore rejection, becasue CouchDB SSL certificate is self-signed
    
    //import PouchDB from 'pouchdb'
    const PouchDB = require('pouchdb')
    const db = new PouchDB('https://admin:****@192.168.1.106:6984/reproduce')
    
    db.allDocs({
        include_docs: true,
        attachments: false
    }).then(function (result) {
        // handle result
        console.log(result)
    }).catch(function (err) {
        console.log(err);
    });
    

    我正在使用$ node server.js 运行上述文件,并且得到了预期的结果:

    $ node server.js 
    { total_rows: 3,
      offset: 0,
      rows: 
       [ { id: '5d6590d3-41c7-4011-be5d-b21f80079ae5',
           key: '5d6590d3-41c7-4011-be5d-b21f80079ae5',
           value: [Object],
           doc: [Object] },
         { id: 'ec6a36d1-952e-4d86-9865-3587c6079fb5',
           key: 'ec6a36d1-952e-4d86-9865-3587c6079fb5',
           value: [Object],
           doc: [Object] },
         { id: 'f508e7aa-b4dc-42fc-96be-b7c1ffa54172',
           key: 'f508e7aa-b4dc-42fc-96be-b7c1ffa54172',
           value: [Object],
           doc: [Object] } ] }
    

    我在服务器端使用 NodeJS 创建了上述代码。但是,如果你想在浏览器中通过HTTPS 与 CouchDB 通信,即在客户端,你必须enable CORS on CouchDB

    【讨论】:

    • 我想运行使用 LevelDB(默认)作为底层存储引擎的 PouchDB-Server。而且,我不清楚如何使用 TLS 启动 PouchDB-Server。可以请教吗?
    【解决方案2】:

    所以经过一番搜索,从this topic 可以清楚地看出,PocuhDB-Server 不支持 HTTPS。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-01
      相关资源
      最近更新 更多