Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure Can';在留言簿应用程序中无法从hashmap获取密钥_Clojure_Luminus - Fatal编程技术网

Clojure Can';在留言簿应用程序中无法从hashmap获取密钥

Clojure Can';在留言簿应用程序中无法从hashmap获取密钥,clojure,luminus,Clojure,Luminus,我正在玩luminus留言簿应用程序。 我在g.test.db.core.clj中添加了一些日志语句来查看数据结构的键。请看下面的“预期关键点”和“实际关键点” 发生了什么事?为什么我不能从数据库返回的数据结构中打印密钥?看起来实际值是一个列表,而不是一个映射。请尝试(>actual first keys pprint)看起来actual是一个列表,而不是一个地图。请尝试(>actual first keys pprint)是否确实要说(>(db/get messages{}{:connecti

我正在玩luminus留言簿应用程序。 我在
g.test.db.core.clj
中添加了一些日志语句来查看数据结构的键。请看下面的“预期关键点”和“实际关键点”


发生了什么事?为什么我不能从数据库返回的数据结构中打印密钥?

看起来实际值是一个列表,而不是一个映射。请尝试
(>actual first keys pprint)

看起来actual是一个列表,而不是一个地图。请尝试
(>actual first keys pprint)

是否确实要说
(>(db/get messages{}{:connection t-conn}))
?这似乎是一个错误的类型,因为我想不出另外一个原因,你会将thread宏与一个表达式一起使用。添加堆栈跟踪。@Josh我不能回答这个问题。当我克隆repo时,它就在那里。@FrankHenard这是我得到的堆栈跟踪:“空堆栈跟踪为null”,见上文。你真的想说
(>(db/get messages{}{:connection t-conn}))
?这似乎是一个错误的类型,因为我想不出另外一个原因,你会将thread宏与一个表达式一起使用。添加堆栈跟踪。@Josh我不能回答这个问题。当我克隆repo时,它就在那里。@FrankHenard这是我得到的堆栈跟踪:“空堆栈跟踪时为空”。见上文。这完全正确。你怎么知道的?你能从日志中分辨出来吗?还是你必须克隆这个项目并尝试一下?很高兴它成功了!我在你的
(pprint-actual)的结果中看到了地图前面打开的paren
。我在Clojure中也做过一些db工作,所以我以前可能遇到过这个问题。这是完全正确的。你是如何解决的?你能从日志中分辨出来吗?还是你必须克隆项目并尝试一下?很高兴它成功了!我看到了打开的paren
在你的
结果的地图前面)(pprint-actual)
。我在Clojure中也做过一些数据库工作,所以我以前可能遇到过这个问题。
(deftest test-messages
  (jdbc/with-db-transaction [t-conn db/conn]
                            (jdbc/db-set-rollback-only! t-conn)
                            (let [timestamp (java.util.Date.)]
                              (is (= 1 (db/save-message!
                                         {:name      "Bobby"
                                          :message   "Hello World!"
                                          :timestamp timestamp}
                                         {:connection t-conn})))
                              (let [actual (-> (db/get-messages {} {:connection t-conn}))
                                    expected {:name      "Bobby"
                                              :message   "Hello World!"
                                              :timestamp timestamp}]
                                (log/info "Expected Keys")
                                (pprint (keys expected))
                                (log/info "Actual Keys")
                                (pprint (keys actual))  ;;<--this is the problem
                                (is (= actual
                                       expected))))))
({:id 35,
  :name "Bobby",
  :message "Hello World!",
  :timestamp #inst "2017-03-04T04:31:01.030000000-00:00"})