【发布时间】:2017-07-04 20:10:22
【问题描述】:
我想要一个本地浏览器数据库,它可以从远程源更新自身。我正在尝试使用 pouchdb / cloudant 来解决这个问题。远程数据库被许多客户端使用,因此应该是只读的,不需要身份验证。在 cloudant 中,我对相关数据库(例如“remoteDB”)的权限配置如下:
{"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==
标题参数是:
- _id: _local/JqXQso2dZEjdZsU1e_2Qxw==
- last_seq: "0"
如果此数据库的 cloudant 中的 nobody 用户具有写入权限,则错误就会消失。有什么想法吗?
这是从远程源进行单向复制的正确方法吗?
【问题讨论】:
-
似乎修复可能是向nobody用户添加_replicator权限