如何在Clojurescript中使用firebase.push?我的数据是否正确?

Hen*_*Zhu 5 javascript clojurescript firebase

我正在尝试将.push一些数据发送到我的Firebase,但我在Chrome控制台中收到此错误:

未捕获错误:Firebase.push失败:第一个参数在属性'arr.0'中包含无效键(cljs $ lang $ protocol_mask $ partition0 $).键必须是非空字符串,不能包含".","#","$","/","["或"]"

这是我的代码:

fb (js/Firebase. "https://example.firebaseio.com/example-listings")

(def app-state (atom {"post" { :first_name "Billy"
                               :last_name "Bob"
                               :location "CA"
                               :email "bob@aol.com"
                               :website "www.pwt.com"
                          }}))

(def postData (get-in @app-state ["post"]))
(.push fb postData)
Run Code Online (Sandbox Code Playgroud)

我也试过用字符串替换键:first_name"first_name".我知道Clojure的数据结构与JavaScript有点不同.是不是Firebase不喜欢我的Clojure地图?

Sym*_*rog 7

Firebase期望JavaScript对象能够进行API调用.您传递的是Clojure数据结构(在本例中为地图).在将Clojure数据结构传递给Firebase函数之前,必须将其转换为JavaScript对象.

所以代替:

(.push fb postData)
Run Code Online (Sandbox Code Playgroud)

你需要做的:

(.push fb (clj->js postData))
Run Code Online (Sandbox Code Playgroud)