这是一个关于Clojure和从数据库访问信息的简单问题。
以下代码,在我的函数内部正在运行:
(defn insertNewValue []
(let [newRank
(reduce + 1
(map :max
(db/query (env :database-url) ["select max(rank) from My_Table"])))
.........
但是当数据库查询只有一条记录时使用reduce似乎对我来说不合适。 所以这就是我尝试替代的方式:
(defn insertNewValue []
(let [dbRecord (db/query (env :database-url) ["select max(rank) from My_Table"])
newRank (+ 1 (:max dbRecord))
.........
看起来更清洁,但它不起作用!
谁能告诉我我做错了什么?
答案 0 :(得分:1)
似乎dbRecord会返回一个列表(这就是为什么你可以map
),但是,在你的第二次尝试中,你将它直接视为地图。由于保证您只有一条记录(您正在查询最大值),或许您需要这样做
(inc (:max (first dbRecord)))