是否可以在不附加任何侦听器的情况下读取 Firebase 数据?

2022-09-02 10:47:37

我正在开发Firebase Android应用程序,需要一种方法来从Firebase读取数据,而无需实际附加任何侦听器。在此特定实例中,我不在乎数据在初始读取后是否发生变化。有没有办法直接访问 ,而无需将 EventListener 附加到 Firebase 引用?或者有没有其他方法可以直接从具有某种等效项的Firebase引用中读取?DataSnapshotref.getValue()

谢谢。


答案 1

您可以使用 Firebase 的 REST API 来访问“原始”数据。

寄件人: https://www.firebase.com/docs/rest-api.html

您可以将任何 Firebase 网址用作 REST 终端节点。您需要做的就是将“.json”附加到URL的末尾,然后从您喜欢的HTTPS客户端发送请求。请注意,HTTPS 是必需的。Firebase 仅响应加密流量,以便您的数据保持安全。

curl https://SampleChat.firebaseIO-demo.com/users/jack/name.json

成功的请求将由 200 OK HTTP 状态代码指示。响应将包含正在检索的数据:

{"first":"Jack", "last": "Sparrow"}

同一页还提到了一个Java包装器项目:https://github.com/bane73/firebase4j


答案 2

Java SDK 提供了一个方法,该方法等效于您的 ref.getValue()。它的使用方式与 类似,但只检索单个值。addListenerForSingleValueEventaddValueEventListener

fb.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snap) {
        System.out.println(snap.getName() + " -> " + snap.getValue());
    }

    @Override public void onCancelled() { }
});

正如 Frank 所提到的,REST API 也是一个不错的选择。


推荐