我在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();
});
答案 0 :(得分:0)
我已将代码更改为:
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);
});
});
}
而且有效。