如何在then()方法Firebase云函数内使用事务处理方法?

时间:2019-02-21 05:55:45

标签: android firebase firebase-realtime-database google-cloud-functions

我想在第二种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);
      });
  )
}

0 个答案:

没有答案