Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Couchdb 脱机启动应用程序时的数据库复制_Couchdb_Database Replication_Pouchdb - Fatal编程技术网

Couchdb 脱机启动应用程序时的数据库复制

Couchdb 脱机启动应用程序时的数据库复制,couchdb,database-replication,pouchdb,Couchdb,Database Replication,Pouchdb,我使用PockDB离线存储数据,并在应用程序联机时与远程CouchDB数据库同步。如果应用程序在线启动,它会工作得很好:当连接中断时,PockDB会触发暂停事件,当连接恢复时,PockDB会继续。下面是一个示例代码: localDB.replicate.to(remoteDB, { live: true, retry: true }).on('paused', function (info) { // replication was paused, usually because o

我使用PockDB离线存储数据,并在应用程序联机时与远程CouchDB数据库同步。如果应用程序在线启动,它会工作得很好:当连接中断时,PockDB会触发
暂停
事件,当连接恢复时,PockDB会继续。下面是一个示例代码:

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)
})
但当应用程序脱机启动时,会遇到错误(
加载资源失败:net::ERR_ADDRESS_UNREACHABLE

无法访问远程数据库,PockDB触发了一个
错误事件(
“数据库遇到未知错误”
,状态500)。即使连接恢复,复制也不会工作

问题: 是否有一种方法可以使复制在应用程序脱机启动时仍能工作(例如,即使尚未访问远程数据库,也要先执行
暂停
事件)

更新: 感谢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上的问题。:)我

无论是在脱机模式还是联机模式下启动,
重试
复制都应能正常工作。很抱歉你遇到了这个错误

同时,您可以避免使用
重试
选项,自己进行重试复制。你可以找到

更新:此错误已在数据库3.6.0中修复