我在Ionic项目(Ionic 4.0.5)中使用PouchDB 7.0.0。
在提供程序中,我同时定义了本地和远程数据库:
@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"
恐怕我不能称其为不言自明的消息。
您猜怎么可能是问题的根本原因?
编辑:在github上浏览PouchDB存储库后,我发现this entry可能涉及相同的问题。
答案 0 :(得分:0)
我通过允许远程CouchDB服务器上的端口5984进行通信来解决了这个问题。
问题是,在端口80上发送请求(即GET http://<my_server>.com/mydb
)确实发送了一些数据,所以我从来没有理会尝试使用端口5984,因为我认为API也在端口80上实现了...
所以至少我的问题与PouchDB没有关系,但我希望错误消息更加具体。