【问题标题】:Accessing a database with Clojure使用 Clojure 访问数据库
【发布时间】:2017-02-19 02:10:58
【问题描述】:

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

这看起来更干净,但它不起作用!

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

【问题讨论】:

    标签: database postgresql heroku clojure heroku-postgres


    【解决方案1】:

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

    (inc (:max (first dbRecord)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多