gpt4 book ai didi

couchdb - 应用程序离线启动时的数据库复制

转载 作者:行者123 更新时间:2023-12-04 23:19:58 25 4
gpt4 key购买 nike

我使用 PouchDB 离线存储数据,并在应用程序上线时与远程 CouchDB 数据库同步。如果应用程序在线启动,则效果很好:PouchDB 触发 pause连接中断时发生的事件,并在连接恢复时继续。这是一个示例代码:

localDB.replicate.to(remoteDB, {
live: true,
retry: true
}).on('paused', function (info) {
// replication was paused, usually because of a lost connection
}).on('change', function (change) {
// yo, something changed!
}).on('active', function (info) {
// replication was resumed
}).on('error', function (err) {
console.log(err);
// totally unhandled error (shouldn't happen)
})

但是当应用离线启动时,遇到错误( Failed to load resource: net::ERR_ADDRESS_UNREACHABLE )

无法访问远程数据库,PouchDB 触发 error事件( "Database encountered an unknown error" ,状态 500)。即使连接恢复,复制也不起作用。

问题:
即使应用程序离线启动,有没有办法使复制工作(例如,即使还没有访问远程数据库,先让 pause 事件出现)?

更新:
感谢 nlawson 的回答!我只需要在函数中添加远程数据库创建即可使其工作:
function retryReplication() {
var remoteDB = new PouchDB('http://129.199.80.62:5984/remotedb');
localDB.replicate.to(remoteDB, {
live: true,
}).on('paused', function (info) {
// replication was paused, usually because of a lost connection
}).on('change', function (change) {
// yo, something changed!
}).on('active', function (info) {
// replication was resumed
}).on('error', function (err) {
setTimeout(retryReplication, 5000);
// totally unhandled error (shouldn't happen)
});
};

最佳答案

这应该是 Github 上的错误报告,而不是 StackOverflow 上的问题。 :) 我 filed it here .
retry无论是在离线模式还是在线模式下启动,复制都应该可以正常工作。很抱歉你遇到了这个错误!

同时,您可以避免 retry选项并自己进行重试复制。您可以找到 a description of how to do that here .

更新:此错误已在 PouchDB 3.6.0 中修复。

关于couchdb - 应用程序离线启动时的数据库复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com