Получение ошибки «Конфликт обновления документа» с PouchDB - PullRequest
0 голосов
/ 23 октября 2018

Я создал сервис на Ionic Project.В режиме онлайн он будет получать данные из API, сохранять данные на PouchDB и возвращать данные.

В автономном режиме он просто будет получать данные из pouchDB.

Но я не могу обновитьданные на PouchDB, вернуть сообщение: «Конфликт обновления документа», статус 409.

Я вставлю сюда некоторый код ..

lista.forEach(element => {
    if (element) {
      inserirBanco.push({
        _id: `hist_transacao_${element.codigo}_${element.codigofidelidade}`,
        oidEvento: element.oidEvento,
        codigo: element.codigo,
        codigofidelidade: element.codigofidelidade,
        codigofidelidadelote: element.codigofidelidadelote,
        datarequisicao: element.datarequisicao,
        datasorteio: element.datasorteio,
        latitude: element.latitude,
        longitude: element.longitude,
        nomeevento: element.nomeevento,
        quantidadetitulo: element.quantidadetitulo,
        situacao: element.situacao,
        titulofinal: element.titulofinal,
        tituloinicial: element.tituloinicial,
        tipo_registro: 'transacoes-vendas-com-historico'
      });
    }
  });
}

if (inserirBanco.length > 0) {
  this.getRevData(inserirBanco).subscribe((res) => {
    console.log('beforeBulk');
    console.log(res);
    res.forEach((obj) => {
      this._db.put(obj);
    });
  })
}

Функция getRevData

private getRevData(list: Array<any>): Observable<Array<any>> {
return new Observable(observer => {

  this._db.allDocs( (listaDocs) => {
    if(listaDocs){

      listaDocs.forEach((item) => {
        list.forEach((itemActual) => {
          if(itemActual._id === item._id) {
            itemActual._rev = item._rev;
          }
        });
      });

    }
  });

  observer.next(list);
  observer.complete();
});

1 Ответ

0 голосов
/ 25 октября 2018

Я изменил свой код на:

if (inserirBanco.length > 0) {
  inserirBanco.forEach((obj) => {
    this._db.getId(obj._id)
      .then(registro => {
        this._db.delete(registro).then(() => {
          this._db.add(obj);
        });
      }).catch(() => {
        this._db.add(obj);
    });
  });
}

и все работает.

...