У меня похожая проблема, но я смог получить данные и поместить число в переменную, проблема в том, что я не могу выполнить обновление внутри firestore, но прилагаю код, который может работать для вас, этот метод принимает 2 параметра: идентификатор и число (количество), которое необходимо добавить к существующему, существующее, которое я получаю с помощью метода get.
Код:
this.afs.doc(`productos/${id}`).ref.get().then(function(doc) {
if (doc.exists) {
const reemplazarCantidad = doc.get('cantidadActual') + cant;
console.log('Datos:', doc.data());
console.log('Hay:', doc.get('cantidadActual'));
console.log('Se debe sumar: ', cant);
console.log('total: ', reemplazarCantidad);
} else {
console.log('No hay datos');
}
}).catch(function(error) {
console.log('Error:', error);
});
}
и, как логично в конструкторе, я объявляю afs как angularfirestore
constructor(public afs: AngularFirestore) {
Ну, решение, которое я нашел сейчас:
в службе.
agregaCantidad(id, cant){
this.afs.doc(`productos/${id}`).ref.get().then(function(doc) {
if (doc.exists) {
const reemplazarCantidad = doc.get('cantidadActual') + cant;
doc.ref.update({cantidadActual: reemplazarCantidad});
} else {
console.log('No hay datos');
}
}).catch(function(error) {
console.log('Error:', error);
});
}
и вызов метода:
this.xxservicexx.agregaCantidad (idProducto, cantidad)
примечание: часть этого решения включает запись в качестве идентификатора продукта названия самого продукта. Это показалось мне наиболее практичным.
но я не уверен, правильный ли он или лучший
Спасибо и всего наилучшего.
ML