Firebase Cloud函数oncall返回null

时间:2020-08-17 13:24:34

标签: javascript firebase google-cloud-functions

奇怪的是什么错误。

我正在使用Firebase云函数中的onCall方法,但是当我从应用程序中读取它时,它会返回null值。我正在尝试返回一些测试数据,但它似乎没有用。我是错误地返回了数据吗?

index.js


    exports.handleMassFollowAnalytics = functions.https.onCall((data, context) => {
      const brandArray = data.brandArray;
      const followed = data.followed;

      let done = 0;
      for (var i = 0; i < brandArray.length; i++) {
        let brand = brandArray[i];
        admin.database()
          .ref(`brands/${brand}/followers`)
          .transaction(function(post) {
              if (post !== null) {
                post--;
              }
              return post;
            },

            function(error, committed, snapshot) {
              done++;
              if (done === brandArray.length) {
                // returning result.
                return {
                  data: "testabc",
                };
              }
            }
          );
      }
    });


app.js

    const handleMassFollowAnalytics = firebase
      .functions()
      .httpsCallable("handleMassFollowAnalytics");
    handleMassFollowAnalytics({
      brandArray: array,
      followed: true,
    }).then((result) => {
      console.log("result: ", result) // returns null everytime
    });

2 个答案:

答案 0 :(得分:1)

您的函数需要返回一个承诺,该承诺将与数据一起解析以发送给客户端。现在,您的函数什么也不返回。事务回调中的return语句不是从主函数返回。

此外,代码还忽略了您正在执行的交易所返回的承诺。从该函数返回的最终承诺必须在所有其他承诺都解决之后才能解决。

答案 1 :(得分:0)

因此,我使用了道格的信息,并得出以下答案,以供日后参考。

这似乎对我来说正确了。

  1. 兑现个人承诺
  2. 返回最终承诺

index.js

Example: