У меня есть две функции в firestore: увеличение / уменьшение числа, которое считает продукты. Приведенный ниже код работает правильно, но не является атомарным, и во время быстрого увеличения / уменьшения и т. Д. Значение ненадежно.
Фактически, при восстановлении данных, увеличении их и последующем обновлении вставляется другая операция, которая создает чередование.
exports.createobject = functions.firestore
.document('objects/{id}')
.onCreate((snap, context) => {
var test = db.collection('system').doc('info');
test.get().then(function (doc) {
var currentTotalobjects = doc.data().totalobjects;
var toSaveTotal = currentTotalobjects + 1;
return test.update({
totalobjects: toSaveTotal
})
.then(function () {
console.log("Update totalobject during oncreate OK");
})
.catch(function (error) {
// The document probably doesn't exist.
console.error("Error during update count total_object: ", error);
});
}).catch(function (error) {
console.log("Error getting document:", error);
});
});
У вас есть идеи, как поддерживать атомарную операцию?