【发布时间】:2018-04-19 15:43:17
【问题描述】:
我正在尝试调用我编写的 firebase 云函数。
我已经使用 Postman 测试了该函数来模拟 HTTP 请求。这是我在 Postman 中调用函数时的 JSON 结果:
{
"groups": [
{
"isPublic": true,
"members": [
true
],
"numberOfMembers": 1,
"groupId": "-LAOPAzMGzOd9qULPxue"
},
{
"isPublic": true,
"members": [
true
],
"numberOfMembers": 1,
"groupId": "-LAOP7ISDI2JPzAgTYGi"
}
]
}
我正在尝试做同样的事情并在我的 android 应用程序中检索这个 JSON 列表。我正在关注 Firebase 网站上的示例:https://firebase.google.com/docs/functions/callable
这是 Firebase 关于如何检索数据的示例:
return mFunctions
.getHttpsCallable("addMessage")
.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;
}
});
目前尚不清楚如何从我的云功能中获取结果并将其用于我的 Android 应用程序的其余部分。
此外,此示例返回一个 Task 对象,根据 Firebase 的文档,该对象现已弃用:https://firebase.google.com/docs/reference/admin/java/reference/com/google/firebase/tasks/Task)
是否有更清晰、更简单的方法来处理来自函数调用的数据?
调用函数非常简单,所以我觉得必须有一个更直接的方法来接收响应。
【问题讨论】:
-
Task 在 Admin SDK for Java 中已被弃用,这就是您要链接的内容。对于 Android SDK,Task 仍然用于所有异步工作,并且不会很快改变。
-
您找到解决方案了吗?如果他们提供像
getValue或toObject这样的方法,从 RTDB 和 Firestore 中检索到的 snapshop 自动生成模型对象,那一定是完美的。似乎task.getResult().getData()返回一个Object。是不是意味着它也可以是String、Integer、List或其他? -
作为一个有根据的猜测,如果结果字符串是您的 JSON 的字符串表示,您可以使用 Gson 解析 JSON 并将数据存储到一个类中。