[英]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.