gpt4 book ai didi

clojure - 如何将 korma 选择结果转换为 json 以提供休息服务(compojure)?

转载 作者:行者123 更新时间:2023-12-01 02:13:07 27 4
gpt4 key购买 nike

我正在使用 compojure、cheshire 和 korma(以及 postgre db)来创建休息服务。
我创建了一个包含两个字符串字段(名称和描述)的表,结构如下:

(defentity posts
(pk :id)
(table :posts)
(entity-fields :name :description))

我可以在这个表中插入记录但是当我尝试执行
(defn get-all-posts [] 
(select posts))

并从服务器返回结果
defroutes app-routes
(GET "/" [] (get-start))
(context "/posts" []
(GET "/" [] (get-all-posts))
...

我收到这样的错误:
java.lang.IllegalArgumentException
没有方法的实现: :render of protocol: #'compojure.response/Renderable found for class: clojure.lang.PersistentVector

正如我所见,我需要将帖子集合转换为 json。怎么做?

最佳答案

响铃响应可以是 either a map or a string 。如果它们是映射,则它们使用一些键,例如 :status 和 :body 来定义响应并设置 cookie 等。您可能希望通过将调用包装到 (get-all-posts) 来显式地将响应从 Clojure 序列 (edn) 转换为 JSON在 generate-string 中(因为您使用的是柴郡):

 {:status 200
:content-type "application/json; charset=UTF-8"
:body (cheshire/generate-string (get-all-posts))}

当你在做它时,指定内容类型和响应代码不会有什么坏处。

关于clojure - 如何将 korma 选择结果转换为 json 以提供休息服务(compojure)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27561524/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com