2017-02-19 6 views
0

ここでは、Clojureとデータベースからの情報へのアクセスに関する簡単な質問があります。Clojureによるデータベースへのアクセス

次のコード、鉱山の機能が働いている内側:

(defn insertNewValue [] 
(let [newRank 
     (reduce + 1 
      (map :max 
      (db/query (env :database-url) ["select max(rank) from My_Table"]))) 
     ......... 

しかし、DBクエリの結果1つのレコードのみがあるときに減らす使用しては、私にとって非常に適切ないないようです。

(defn insertNewValue [] 
(let [dbRecord (db/query (env :database-url) ["select max(rank) from My_Table"]) 
     newRank (+ 1 (:max dbRecord)) 
     ......... 

よりクリーンなようだが、それは動作しません。だからここ は、私が代替として試みです!

誰でも私が間違っていることを教えてもらえますか?

答えて

1

dbRecordはリストを返すようですが(その理由はmapです)、2回目の試みではマップとして直接扱います。単一のレコードしか持っていないことが保証されているので(おそらくあなたは最大値を問い合わせています)

(inc (:max (first dbRecord))) 
+0

これは簡単なようです。それがうまくいくなら、それは良いことになるでしょう。 – Michel

+0

はい、動作します。ありがとう! – Michel

関連する問題