Firebase functions.https.onCall 有效但返回 null

Mba*_*uru 5 android node.js firebase

我有以下用 node.js 编写的 firebase 云函数,我从我的 Android 应用程序调用

exports.findNearestBranch = functions.https.onCall((data, context) => { 
  var latitutde = data.lat;
  var longitude = data.long;

  var ret;

  return getLocationObject(latitutde,longitude)
    .then(function(result){
      var fromObject=result;
      console.log('CONTEXT CLIENT '+latitutde+' LONG '+longitude);

      calculateNearestBranch(fromObject)
        .then(function(result){
          console.log("TO APP "+JSON.stringify(result));
          ret=result;
        })
        .catch(function(error){

        });
    })
    .catch(function(error){

    });
});
Run Code Online (Sandbox Code Playgroud)

该功能工作正常,但在尝试使用以下方法在 Android 中获取结果时我得到了空值

exports.findNearestBranch = functions.https.onCall((data, context) => { 
  var latitutde = data.lat;
  var longitude = data.long;

  var ret;

  return getLocationObject(latitutde,longitude)
    .then(function(result){
      var fromObject=result;
      console.log('CONTEXT CLIENT '+latitutde+' LONG '+longitude);

      calculateNearestBranch(fromObject)
        .then(function(result){
          console.log("TO APP "+JSON.stringify(result));
          ret=result;
        })
        .catch(function(error){

        });
    })
    .catch(function(error){

    });
});
Run Code Online (Sandbox Code Playgroud)

我在网上浪费了无数个小时试图找出问题所在,但没有成功。有人请指出我的问题在哪里。

ske*_*hat 5

您没有在 https 可调用文件中返回任何内容。

尝试添加returncalculateNearestBranch功能,并具有功能返回result变量。

此外,您应该将一些日志记录到catch语句中,以便您的可调用对象不会静默失败。

exports.findNearestBranch = functions.https.onCall((data, context) => { 
  var latitutde = data.lat;
  var longitude = data.long;

  return getLocationObject(latitutde,longitude)
    .then(function(result){
      var fromObject=result;
      console.log('CONTEXT CLIENT '+latitutde+' LONG '+longitude);

      // Added `return`
      return calculateNearestBranch(fromObject)
        .then(function(result){
          console.log("TO APP "+JSON.stringify(result));

          // Returned `result`
          return result;
        })
        .catch(function(error){

        });
    })
    .catch(function(error){

    });
});
Run Code Online (Sandbox Code Playgroud)