簡體   English   中英

Firebase函數。https.onCall有效,但返回null

[英]Firebase functions.https.onCall works but returns null

我有以下用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){

    });
});

該函數工作正常,但嘗試使用以下方法在Android中獲取結果時出現null

private Task<String> inputCurrentLocation(String[] geoLocations) { 
  Map<String, Object> data = new HashMap<>();
  data.put( "lat", geoLocations[0] );
  data.put( "long", geoLocations[1] );

  return mFunctions
    .getHttpsCallable( "findNearestBranch" )
    .call( data )
    .continueWith( new Continuation<HttpsCallableResult, String>() {
      @Override
      public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
        String result = (String) task.getResult().getData();
        return result;
      }
    } ).addOnCompleteListener( new OnCompleteListener<String>() {
      @Override
      public void onComplete(@NonNull Task<String> task) {
        String result = task.getResult();
        System.out.println("RESULT FROM NODE "+result+" SUCCESS"+task.isSuccessful());
      }
    } );
}

我浪費了無數的在線時間,試圖找到問題所在,但沒有成功。 有人請指出我的問題所在。

您不會在可調用的https中返回任何內容。

嘗試將return calculateNearestBranch添加到calculateNearestBranch函數,並使該函數返回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){

    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM