无法使用 PouchDB 将本地 IndexedDB 复制到远程 CouchDB
Fail to replicate a local IndexedDB to a remote CouchDB using PouchDB
我在 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 上运行。它已经在我的服务器上创建,没有设置管理员或成员,所以它应该是 public 并允许未经身份验证的请求。顺便说一句,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 可能涉及相同的问题。
我通过允许流量通过我的远程 CouchDB 服务器上的端口 5984 解决了这个问题。
问题是,在端口 80 上发送请求(即 GET http://<my_server>.com/mydb
)确实会 发回一些数据,所以我从一开始就懒得尝试使用端口 5984因为我认为 API 也是在端口 80 上实现的...
所以至少我的问题与 PouchDB 无关,但我希望错误消息更具体一些。
我在 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 上运行。它已经在我的服务器上创建,没有设置管理员或成员,所以它应该是 public 并允许未经身份验证的请求。顺便说一句,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 可能涉及相同的问题。
我通过允许流量通过我的远程 CouchDB 服务器上的端口 5984 解决了这个问题。
问题是,在端口 80 上发送请求(即 GET http://<my_server>.com/mydb
)确实会 发回一些数据,所以我从一开始就懒得尝试使用端口 5984因为我认为 API 也是在端口 80 上实现的...
所以至少我的问题与 PouchDB 无关,但我希望错误消息更具体一些。