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

How to firebase.push in Clojurescript? Is my data correct?

本文关键字:数据 我的 是否 push Clojurescript firebase      更新时间:2023-09-26

我正在尝试向我的Firebase .push一些数据,但是在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)

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

Firebase 需要 JavaScript 对象进行 API 调用。你正在向它传递一个Clojure数据结构(在本例中为映射(。在将 Clojure 数据结构传递给 Firebase 函数之前,您必须将其转换为 JavaScript 对象。

所以代替:

(.push fb postData)

您需要执行以下操作:

(.push fb (clj->js postData))