2016-09-28 5 views
1

clojure 서버는 mysql 데이터베이스에서 datetime 열을 읽습니다. JDBC를 사용하여이 작업은 일반적으로 나는 transit 형식을 통해 프론트 엔드에이 데이터를 가져 오는거야 java.sql.Timestampclojure 서버에서 전달 형식을 통해 cljs 프론트 엔드로 전달되는 날짜

의 인스턴스를 반환합니다. 날짜를 타임 스탬프로 강요하고 예를 들어 추가 처리를 위해 프론트 엔드에서 파싱 할 수있다. 라이브러리 cljs - 시간. 이것이 갈 길이 아니면 더 편리한 접근 방법이 있습니까?

+0

것은 당신이 java.until.Date로 자동으로 변환 할 수 (또는 사용자가 선택한 다른 클래스해야 JDBC를 사용하는 경우) 쿼리 시간에 문제가 해결 될까요? –

+0

오, 이제 알겠습니다. java.util.Date는 대중 교통 유형입니다. 좋은 지적. 그러나 그것은 클라이언트 측에서 무엇이 강제 될 것인가? –

+0

마지막 질문에 답변드립니다. java.util.Date를 사용하면 프론트 엔드에서 js/Date 인스턴스가됩니다. 그러나, someonw가 jdbc/honeysql 쿼리에서 java.util.Date를받는 간결한 방법을 알고 있다면, 나는 그것을 듣고 싶어 할 것이다. –

답변

1

transit-cljs here에서 기본 유형 매핑을 볼 수 있습니다. 기본적으로 Transit time 값은 JavaScript Date에 매핑됩니다. 나는 날짜를 goog.Date.UtcDateTime으로 매핑하는 것을 선호한다. 이 교통 읽기 및 쓰기 핸들러를 확장에 docs를하지만 여기에 우리가 사용하는 작업은 다음과 같습니다

(def transit-readers 
    {:handlers 
    {"m" (transit/read-handler (fn [s] (UtcDateTime.fromTimestamp s))) 
    "u" uuid}}) 

(def transit-writers 
    {:handlers 
    {UtcDateTime (transit/write-handler 
        (constantly "m") 
        (fn [v] (.getTime v)) 
        (fn [v] (str (.getTime v))))}}) 
관련 문제