База данных CouchDb со многими ревизиями - PullRequest
0 голосов
/ 04 ноября 2018

У нас есть приложение, которое работает с PouchDb и CouchDb в качестве сервера базы данных. Одна из баз данных выросла со слишком большим количеством ревизий. Он имеет 839 документов, но когда я синхронизируюсь с приложением, он вставляет 8500 элементов (некоторые документы имеют более 300 ревизий). Я осматривался и думал, что мне нужно работать с revs_limit в pouchdb, но он не работает.

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

Я тоже пробовал auto_compaction, но это не решило мою проблему.

Возможно ли удалить ревизии на стороне сервера (в couchdb), чтобы избежать синхронизации моего приложения более чем 8000 элементов?

1 Ответ

0 голосов
/ 11 ноября 2018

Когда речь идет о репликации с CDB, нет ничего общего с revs_limit на стороне PDB - это влияет только на документы, созданные и поддерживаемые локально в PDB, а не на сервере. Поместите желаемое число в конечную точку CDR _revs_limit. В моем коде это работает так:

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

...