使用Clojure访问数据库

时间:2017-02-19 02:10:58

标签: database postgresql heroku clojure heroku-postgres

这是一个关于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))
      .........

看起来更清洁,但它不起作用!

谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎dbRecord会返回一个列表(这就是为什么你可以map),但是,在你的第二次尝试中,你将它直接视为地图。由于保证您只有一条记录(您正在查询最大值),或许您需要这样做

(inc (:max (first dbRecord)))