Увеличьте значение в поле в firestore атомно - PullRequest
0 голосов
/ 24 января 2019

У меня есть две функции в 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);
    });
  });

У вас есть идеи, как поддерживать атомарную операцию?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...