使用Clojure挂起的Firebase v3 Java库
根据挂起,通过Java/Android Firebase库从Clojure读取或写入Firebase v3。我怀疑有凭证问题,但未发现任何错误。使用较旧的使用Clojure挂起的Firebase v3 Java库,firebase,clojure,firebase-realtime-database,credentials,Firebase,Clojure,Firebase Realtime Database,Credentials,根据挂起,通过Java/Android Firebase库从Clojure读取或写入Firebase v3。我怀疑有凭证问题,但未发现任何错误。使用较旧的com.firebase.client库进行类似调用,如果这会导致不同的结果 Maven依赖 我下载了服务帐户凭据,并将其压缩到一个FirebaseDatabase实例中,我可以调用该实例(child(ref db)“some key”)以获得一致的数据库URL 但是,对实际读取(通过值或子侦听器)、设置或推送新数据的任何调用都将挂起 挂起代码
com.firebase.client
库进行类似调用,如果这会导致不同的结果
Maven依赖
我下载了服务帐户凭据,并将其压缩到一个FirebaseDatabase
实例中,我可以调用该实例(child(ref db)“some key”)
以获得一致的数据库URL
但是,对实际读取(通过值或子侦听器)、设置或推送新数据的任何调用都将挂起
挂起代码
我怀疑与凭据有关,但没有用户反馈,无法调试。我花了几个小时试图解决这个问题——大多数官方文档都会出现或链接到已有3年历史的图书馆
我能够从JavaScript/ClojureScript读取和写入Firebase数据库,这很好-规则允许所有写入
我做错了什么
[com.google.firebase/firebase-server-sdk "3.0.3"]
(let [db-name "my-db"
creds (io/input-stream "service-account-creds.json")
opts (options "https://my-db.firebaseapp.com/" creds)
app (get-or-init db-name opts) ; (get-app "[DEFAULT]")
db (app->db app)
root (ref db)]
(def prom (get (child root "some-key"))))
prom
=> #object[clojure.core$promise$reify__7005 0x4f7066a6 {:status :pending, :val nil}]
;; sanity check DB:
(app->db app)
=> #object[com.google.firebase.database.FirebaseDatabase
0x1580407f
"com.google.firebase.database.FirebaseDatabase@1580407f"]
=> Promise never resolves:
@prom ;; hangs forever