Передать дату от сервера clojure к интерфейсу cljs через транзитный формат
Clojure сервер читает столбец datetime из базы данных mysql. Используя jdbc, это действие обычно возвращает экземпляр java.sql.Timestamp
Я доставляю эти данные в интерфейс через transit
формат. Можно привести дату к временной метке и проанализировать ее на внешнем интерфейсе для дальнейшей обработки, например, для библиотеки cljs-time. Это путь или есть другой, более удобный подход?
1 ответ
Вы можете увидеть сопоставления типов по умолчанию в tranj-cljs здесь. По умолчанию Транзит time
значения отображаются в JavaScript Date
s. Я предпочитаю отображать даты 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))))}})