根据mrmcc3's usage通过Java / Android Firebase库从Clojure读取或写入Firebase v3。我怀疑是凭据问题,但看不到任何错误。 matchbox使用较旧的com.firebase.client
库进行类似的调用,如果它有所不同。
[com.google.firebase/firebase-server-sdk "3.0.3"]
我下载了服务帐户凭据并将其按摩到FirebaseDatabase
实例中,我可以调用(child (ref db) "some-key")
来获取连贯的数据库网址。
但是,任何实际读取(通过值或子侦听器),设置或推送新数据的调用都会挂起。
(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
我怀疑与凭据相关的内容,但没有用户反馈,无法调试。我试图解决这个问题几个小时 - 大多数官方文档显示为deprecated或链接到3岁的图书馆。
我能够从JavaScript / ClojureScript中读取和写入此Firebase数据库 - 规则允许所有写入。
我做错了什么?