【问题标题】:Getting Error 'Document update conflict' with PouchDB使用 PouchDB 出现错误“文档更新冲突”
【发布时间】:2018-10-26 00:35:55
【问题描述】:

我在 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();
});

【问题讨论】:

    标签: angular ionic-framework pouchdb


    【解决方案1】:

    我已将代码更改为:

    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);
        });
      });
    }
    

    它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多