多个 Pouchdb 不与 couchdb 同步

问题描述

我在我的电子应用程序中使用 pouchdb,我的应用程序中有超过 15 个数据库。我的问题是当我将一两个数据库同步到 couchdb 时效果很好,但超过 3 个 couchdb 无法同步。

我的代码

var sync = PouchDB.sync('mydb','http://localhost:5984/mydb',{
  live: true,retry: true
})

我也试过没有 live 但它增加了程序的复杂性,但是我想在执行插入、删除、更新操作时手动放置代码

pouchdb 可以观察放置、更新、删除事件吗? 改为实时执行手动同步

我应该如何实现?

如何正确同步多个数据库

我选择实时同步还是手动同步?

pouchdb 是否适合多数据库同步?

解决方法

不要使用带有实时同步的数据库,而是使用带有回调的手动同步

问题:

  1. 多个 pouchdb 同步发出多个 http 请求,例如:(20 pouchdb 同步发出 20 个 http 请求)所以这是个坏主意
  2. pouchdb 实时同步很好,适合一两个数据库,如果您进行 10 或 20 个实时 pouchdb 同步,它会始终激活 10 或 20 个 http 请求,因此这是个坏主意,还会阻塞您的前端 dom
  3. 不要将手动同步与 setinterval 一起使用,setinterval 也是个坏主意,但它会在同步完成之前调用同步

解决方案

  1. 我们保留单个 http 请求
  2. 我们一一完成后调用每个数据库
  3. 我们总是在没有 dom 块的情况下生活,但是 settimeout 让您的 dom 放松

代码

    function sync(){
      setTimeout(function() {
    var sync = PouchDB.sync('db1','http://localhost:5984/db1')
        .on('complete',(info) => {
        PouchDB.sync('db2','http://localhost:5984/db2')
        .on('complete',(info) => {
        sync()
    });
    });
   },1000)
}