2016-09-28 6 views
1

clojureサーバは、mysqlデータベースからdatetimeカラムを読み取ります。 jdbcを使用すると、通常、このアクションはjava.sql.Timestampのインスタンスを返します。clojureサーバからcljsフロントエンドに通過フォーマットを渡します。

このデータをtransitフォーマットでフロントエンドに取り込みます。日付をタイムスタンプに強制し、それをフロントエンド上で解析して、例えば次の処理を行うことができる。ライブラリcljs-time。これは行く方法なのでしょうか、それとももっと便利なアプローチがありますか?

+0

あなたはJDBCを使用している場合は、java.until.Date(またはお好みの他のクラスに自動的に変換することができるはずです)クエリ時に、あなたの問題を解決するだろうか? –

+0

ああ、私は今参照してください。 java.util.Dateは通過型です。いい視点ね。しかし、それはクライアント側で何が強制されるのだろうか? –

+0

最後の質問に答えます。 java.util.Dateを使用すると、フロントエンドでjs/Dateインスタンスになります。しかし、誰かがjdbc/honeysqlクエリからjava.util.Dateを受け取る簡潔な方法を知っているなら、私はそれを聞いていたいと思っています。 –

答えて

1

デフォルトのタイプマッピングは、transit-cljs hereで確認できます。デフォルトでは、トランジット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))))}}) 
関連する問題