无法使用PouchDB将本地IndexedDB复制到远程CouchDB



我在Ionic项目中使用PouchDB 7.0.0(Ionic 4.0.5(。

在提供者中,我定义了本地和远程数据库:

@Injectable()
export class DatabaseProvider {
constructor() {
this.db = new PouchDB("mydb");
this.remote = new PouchDB("http://<my_server_running_couchdb>/<remote_db_name>")
}

本地数据库作为IndexedDB实例存在于Chrome浏览器中。然而,这个问题也发生在Firefox中,所以看起来浏览器并不是罪魁祸首。

远程数据库最初是空的,并在CouchDB 2.1.2上运行。它已经在我的服务器上创建,没有设置管理员或成员,所以它应该是公共的,并允许未经身份验证的请求。顺便说一下,CORS也被启用了。

在同一个提供程序中,我还定义了一种触发从本地数据库到远程节点的复制的方法:

replicateLocalDBToRemote() {
console.log("Replicating database...");
this.db.replicate.to(this.remote).then(() => {
console.log("Celebrate");
}).catch(error => {
console.error(error)
})
}

以下是对replicateLocalDBToRemote的调用向我抛出的

CustomPouchError {__zone_symbol__currentTask: e, result: {…}}
result:
doc_write_failures: 0
docs_read: 0
docs_written: 0
end_time: "2018-11-21T16:23:36.974Z"
errors: []
last_seq: 0
ok: false
start_time: "2018-11-21T16:23:36.874Z"
status: "aborting"

恐怕我不能称之为不言自明的信息。

有人猜测这个问题的根本原因是什么吗?

EDIT:在github上浏览PouchDB repo后,我发现了可能涉及相同问题的条目。

我允许通过远程CouchDB服务器上的端口5984进行通信,从而解决了这个问题。

问题是,在端口80(即GET http://<my_server>.com/mydb(上发送请求确实会发送回一些数据,所以我一开始就不想尝试端口5984,因为我认为API也在端口80上实现…

所以,至少我的问题与PouchDB无关,但我希望错误消息更具体一点。

最新更新