pouchdb - 使用远程LevelDB进行安全复制

时间:2018-04-22 12:42:02

标签: ssl replication pouchdb

我热衷于在浏览器内存中使用PouchDB来获取Angular应用程序。这个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实例? 如何启动支持TLS进行实时复制的PouchDB实例?

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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