База данных Monger, соединяющая и хранящая результаты

Итак, у меня есть база данных сообщений, к которым я хочу получить доступ, но я также хочу кэшировать результаты запроса, чтобы не устанавливать дополнительные подключения к базе данных.

Пока что у меня что то типа

 ;;talk with the database and get posts by their [count]
 (defn posts-from-db []
   (let [conn (mg/connect {:host "127.0.0.1" :port 27272})
         db (mg/get-db conn "submitted-content")
         coll "posts"]
     (with-collection db coll
     (find {})
     (fields [:post_content :id])
     ;; it is VERY IMPORTANT to use array maps with sort
     (sort (array-map :tags -1 :post_content 1))
     (limit numberOfPosts))))

Это возвращает коллекцию результатов, которые выглядят как

({:_id #<ObjectId 54d927ce9c521eb276553f11>, :post_content "Mermaids and dakinis "},
 { .... },
 { .... },
 { .... })

Я думаю, что хороший способ сделать это состоит в том, чтобы сохранить результат в символе (var? Key? .. не уверен, что соответствующее словоблудие для Clojure), а затем проверить, установлен ли этот var.

Как разработчик обычно разрешает эту ситуацию?

1 ответ

Если ваша цель состоит в том, чтобы добавить слой кэша, вы можете посмотреть в библиотеке core.memoize

Другие вопросы по тегам