May*_*aya 2 android asynchronous firebase google-cloud-functions
我正在尝试从android应用程序调用异步Firebase函数,并在该函数返回时获取“ INTERNAL”异常。
Android:
private Task<String> fetchData() {
// Create the arguments to the callable function, which is just one string
Map<String, Object> data = new HashMap<>();
data.put(“id”, “abc”);
return FirebaseFunctions.getInstance()
.getHttpsCallable(“calculate”)
.call(data)
.continueWith(new Continuation<HttpsCallableResult, String>() {
@Override
public String then(@NonNull Task<HttpsCallableResult> task) throws Exception {
Map<String, Object> result = (Map<String, Object>) task.getResult().getData();
return (String)result.get(“data”);
}
});
}
Run Code Online (Sandbox Code Playgroud)
Firebase功能:
exports.calculate = functions.https.onCall((data, context) => {
const text = data.id;
return calc.calculate( (err, response) => {
if(err) {
// handle error
} else {
const data = response.dataValue;
}
}).then(() => {
return {“data”: data};
});
});
Run Code Online (Sandbox Code Playgroud)
例外:
com.google.firebase.functions.FirebaseFunctionsException: INTERNAL
Run Code Online (Sandbox Code Playgroud)
处理可调用函数中的错误的文档指出必须返回一个函数实例。https.HttpsError:
为确保客户端获取有用的错误详细信息,请通过抛出(或返回被拒绝的Promise)的实例来返回可调用对象
functions.https.HttpsError的错误...如果HttpsError从函数中抛出的错误以外的其他 错误,则客户端会收到一条错误消息内部和内部代码。
您的calc.calculate()呼叫似乎返回的错误未得到正确处理,导致返回的错误状态为INTERNAL。
按照上面链接的文档中的示例,您的代码应类似于:
if(err) {
// handle error
throw new functions.https.HttpsError('calc-error', 'some error message');
} else {
const data = response.dataValue;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1787 次 |
| 最近记录: |