Как использовать метод trasaction в облачной функции firebase метода then ()? - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу запустить операцию транзакции во втором методе then(), который похож на

return admin.database().ref(/Posts).child(oldPostKey).transaction(); 

Правильно ли это сделать, как показано в коде?При запуске я не вижу ошибок в журнале консольной функции Firebase, но он возвращает что-либо следующему методу then().admin.database().ref(/Posts).child(oldPostKey) имеет более одного ребенка.Теперь в следующем методе then() я хочу получить все значения потомка для дальнейшей обработки.Кто-нибудь может мне помочь?

exports.newIdGenerator = functions.database.ref('/User/{fixedId}').onCreate((shot, context) => {

    const fixedId = context.params.fixedId;
    const totalLikeRef = admin.database().ref(`/TotalLike`).child(fixedId);
    var totalAmount;

    return totalLikeRef.transaction((totalLike) => {

        if (totalLike !== null) {

          console.log("totalLike: " + totalLike);
          totalAmount = totalLike;
          return totalAmount;

        } else {
          throw totalAmount;
        }

      })
      .then((totalAmount) => {

        return admin.database().ref(`/OldNewKey`).child(fixedId).once('value');

      })
      .then((oldPostKeyShot) => {

        if (!oldPostKeyShot.exists()) {
          oldPostKey = fixedId;
        } else {
          oldPostKey = oldPostKeyShot.val();
        }

        return admin.database().ref(`/Posts`).child(oldPostKey).transaction();

      })
      .then((postRefShot) => {

        if (postRefShot === null) {
          return null;
        } else {
          return postRefShot;
        }

      })
      .catch((error) => {
        return admin.database().ref().child('Send').child(fixedId).set(null);
      });
  )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...