阅读远程pouchdb

问题描述:

只复制我想有一个本地的浏览器DB从远程源自我更新。我试图使用pouchdb/cloudant来解决这个问题。远程数据库被许多客户端使用,因此应该只读且不需要验证。在cloudant我的权限配置的相关数据库(如“remoteDB”)如下:阅读远程pouchdb

{"cloudant":{"admin_user":["_writer","_admin","_replicator","_reader"],"nobody":["_reader"],"apiKey":["_writer","_admin","_replicator","_reader"]}} 

在我的设置代码中,我有以下几点:

var localDB = new PouchDB('local'); 
var remoteDB = new PouchDB('https://account.cloudant.com/remoteDB'); 

localDB.replicate.from(remoteDB, {live: false}).on('change', function (change) { 
    console.log("change", change); 
}).on('error', function (err) { 
    console.log("err-replicate", err); 
}); 

我得到一个401未经授权错误时加载一个包含这个的页面。导致此请求是针对PUT请求:

https://account.cloudant.com/remoteDB/_local/JqXQso2dZEjdZsU1e_2Qxw==

头PARAMS是:

  • _id:_local/JqXQso2dZEjdZsU1e_2Qxw ==
  • last_seq: “0”

如果我有cloudant nobody用户对这个数据库有作家权限错误消失。任何想法这里有什么不对?

这是有单向复制从远程源的正确方法?

+0

似乎修复可能会将_replicator权限添加到任何用户 –

您所看到的错误是PouchDB试图写入“检查点”文件到远程数据库Cloudant。该检查点标记出客户端得到了在修订时间表,使未来的复制,因为他们可以从他们离开的地方重新开始更高效。

您正确地猜测解决此问题的方法是为只读复制授予对用户(或所有人)“读取器”权限的“_reader”&“_replicator”权限。该_replicator权限允许写入本地文档,而不是核心文件本身。这足以允许保存检查点文档,并使PouchDB无任何错误地继续。