2017-02-19 1 views
0

다음은 Clojure와 데이터베이스 정보 액세스에 관한 간단한 질문입니다.Clojure를 사용하여 데이터베이스 액세스

다음 코드, 광산의 기능이 작동 내부 :

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

그러나 DB 쿼리의 결과 하나의 기록이있을 때 감소하여 나에게 매우 적절한 것 같지 않습니다.

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

훨씬 청소기 보인다, 그러나 그것은 작동하지 않습니다 그래서 여기 내가 대체 뭘하려!

누구든지 내가 뭘 잘못하고 있다고 말할 수 있습니까?

답변

1

dbRecord가 목록을 반환하는 것 같습니다 (즉, map 일 수 있습니다). 그러나 두 번째 시도에서는 맵으로 직접 처리합니다. 단일 레코드 만 가질 것이므로 (아마도 최대 값을 쿼리하고 있습니다.)

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

단순 해 보입니다. 그것이 효과가 있다면 좋을 것입니다. – Michel

+0

예. 작동합니다. 감사! – Michel

관련 문제