【发布时间】:2018-03-24 04:11:32
【问题描述】:
我正在将 clojure 与 jdbc、compojure、cheshire、postgresql、c3p0、tryin make REST 一起使用。当我将此代码用作处理程序时
(defn get-document [id]
(sql/query (db-connection)
["select * from document where id = cast(? as integer)" id]
{:row-fn
(fn [first]
(if (empty? first )
(response "empty")
(response first)
))}))
如果 reslutset 不为空,我有我需要的响应,但如果它为空,我得到空括号 []。
这也是我的项目依赖项
:dependencies [[org.clojure/clojure "1.8.0"]
[compojure "1.5.1"]
[ring/ring-json "0.4.0"]
[c3p0/c3p0 "0.9.1.2"]
[ring/ring-defaults "0.2.1"]
[org.clojure/java.jdbc "0.7.3"]
[org.postgresql/postgresql "42.1.4"]
[cheshire "5.8.0"]]
【问题讨论】:
-
[]是一个空向量。你期望得到什么(大概是nil)?为什么[]被退回是个问题? -
如果向量为空,我会尝试做出自定义响应,我怎么知道谓词(空?)必须使用它,但不是,我不明白我做错了什么
-
我想我现在明白了。您希望看到响应“空”,但没有得到它。
-
另外一点需要注意的是,如果你做一个 (first rs),其中 rs 是你的结果集并且 rs 是空的,first 将返回 nil,所以 (if (nil? (first rs)) )
标签: jdbc clojure compojure cheshire