我正在尝试.push
一些数据到我的Firebase,但我在Chrome控制台中收到此错误:
未捕获错误:Firebase.push失败:第一个参数在属性' arr.0'中包含无效密钥(cljs $ lang $ protocol_mask $ partition0 $)。密钥必须是非空字符串,且不能包含"。","#"," $"," /& #34;," [",或"]"
这是我的代码:
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)
我还尝试使用:first_name
替换字符串"first_name"
。我知道Clojure的数据结构与JavaScript有点不同。是不是Firebase不喜欢我的Clojure地图?
答案 0 :(得分:7)
Firebase需要一个JavaScript对象来进行API调用。您传递的是Clojure数据结构(在本例中为地图)。在将Clojure数据结构传递给Firebase函数之前,必须将其转换为JavaScript对象。
所以而不是:
(.push fb postData)
你需要这样做:
(.push fb (clj->js postData))