【问题标题】:CouchDb Database with many revisions具有许多修订版的 CouchDb 数据库
【发布时间】:2018-11-11 15:06:57
【问题描述】:

我们有一个应用程序可以在其中使用 PouchDb 并将 CouchDb 作为数据库服务器。其中一个数据库因修订过多而增长。它有 839 个文档,但是当我与应用程序同步时,它会插入 8500 个项目(有些文档有超过 300 个修订版)。我环顾四周,我认为我必须在 pouchdb 中使用 revs_limit,但它不起作用。

this.db = new PouchDB(perfil.profile.bd, 
                     {auto_compaction: true,revs_limit:10}
);

我也尝试了 auto_compaction,但这并不能解决我的问题。

是否可以在服务器端(在 couchdb 中)删除修订以避免我的应用同步超过 8000 个项目?

【问题讨论】:

    标签: ionic3 couchdb pouchdb


    【解决方案1】:

    当涉及到从 CDB 复制时,与 PDB 端的 revs_limit 无关 - 它仅影响在 PDB 中本地创建和维护的文档,而不影响服务器。 将所需的数字放在 _revs_limit CDB 端点上。 在我的代码中,它的工作方式如下:

    CDB.setRevsLimit = (dbName, limit)=> {
      return new Promise((resolve, reject)=> {
        let payload = putOptions;
        payload.path = dbName + '/_revs_limit';
        let req = http.request(payload, (res) => {
          let data = '';
          res.setEncoding('utf8');
          res.on('data', (chunk)=> {data += chunk})
          res.on('end', ()=> {
            if (res.statusCode === 200) {
              return resolve('setRevsLimit_done')
            } else {
              return reject(res.statusCode + ': ' + data)
            }
          })
        });
        req.on('error', (err)=> {return reject('CDB.setRevsLimit ERR: ' + err)})
        req.write(JSON.stringify(limit));
        req.end();
      })
    };
    

    在您可能希望在 CDB 端运行清除和压缩之后

    【讨论】:

    • 好的,谢谢.. 现在它可以工作了,但清除不起作用.. 我收到“不支持”之类的回复。你知道我是否需要做一些特殊的配置吗?
    • 如果您以正确的方式构建请求,则没什么特别的。查看 CDB 文档,一切都很简单
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多