Передать дату от сервера clojure к интерфейсу cljs через транзитный формат

Clojure сервер читает столбец datetime из базы данных mysql. Используя jdbc, это действие обычно возвращает экземпляр java.sql.Timestamp

Я доставляю эти данные в интерфейс через transit формат. Можно привести дату к временной метке и проанализировать ее на внешнем интерфейсе для дальнейшей обработки, например, для библиотеки cljs-time. Это путь или есть другой, более удобный подход?

1 ответ

Вы можете увидеть сопоставления типов по умолчанию в tranj-cljs здесь. По умолчанию Транзит time значения отображаются в JavaScript Dates. Я предпочитаю отображать даты goog.Date.UtcDateTime, Есть документы по расширению обработчиков Transit Read и Write, но вот что мы используем:

(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))))}})
Другие вопросы по тегам