firebase onCall云函数不返回结果

时间:2020-11-02 22:33:15

标签: javascript node.js firebase google-cloud-functions

我的可调用函数如下:

exports.function = functions.https.onCall((data, context) => {

    let result1, result2;

    async function function1() {
        return 1;
    }

    async function function2() {
        return 2;
    }

    return Promise.all([
        result1 = function1(),
        result2 = function2()
    ])
    .then(() => {
        console.log(result1);
        console.log(result2);
        return {
            result1: result1,
            result2: result2
        }
    }) 
})

我在客户端获得的result1和result2没有任何值,而只有一个称为domain的字段。我的云功能有什么问题?

日志输出

Promise {
  1,
  domain: 
   Domain {
     domain: null,
     _events: { error: [Function] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } } 

Promise {
  2,
  domain: 
   Domain {
     domain: null,
     _events: { error: [Function] },
     _eventsCount: 1,
     _maxListeners: undefined,
     members: [] } } 

1 个答案:

答案 0 :(得分:2)

您正在捕获function1function2返回的承诺,并尝试将其直接发送给客户。那是行不通的。您需要在Promise.all()返回的promise的回调中获取它们的解析值。

    return Promise.all([
        function1(),
        function2()
    ])
    .then((result1, result2) => {
        console.log(result1);
        console.log(result2);
        return {
            result1: result1,
            result2: result2
        }
    }) 

请注意,您甚至不需要在较高范围内声明result1和result2。