如何在clojure中基于html表单post执行数据库条目?

如何在clojure中基于html表单post执行数据库条目?,clojure,macros,compojure,Clojure,Macros,Compojure,我在使用Compojure时遇到了宏“defroutes”的问题。我的错误是由宏未计算函数引起的。 下面是我的路线和我正在尝试做的一个例子。为了强调,增加了星星 (defroutes simple-routes (GET "/", [], form) ***(POST "/", [count, day], (do (create-entry count day) "Success!")*** (GET "/attendance/", [], response) (resourc

我在使用Compojure时遇到了宏“defroutes”的问题。我的错误是由宏未计算函数引起的。 下面是我的路线和我正在尝试做的一个例子。为了强调,增加了星星

(defroutes simple-routes
  (GET "/", [],  form)
  ***(POST "/", [count, day], (do (create-entry count day) "Success!")***
  (GET "/attendance/", [], response)
  (resources "/")
  (not-found "404")

create entry
按此方式计算时功能正确
(create entry 1 2)
将两个整数输入数据库。但是,当放置在上述route宏中时,它不会运行。如何从html表单帖子中获取作为
(创建条目计数日)
运行的两个整数值?(是的,我知道这段代码不是独立的,但上面的代码是唯一有问题的代码,因为其他所有代码都运行良好。)

当然有一个更简洁的方法。但是,将星号行更改为以下内容并添加函数会起作用:

(POST "/", [], entry) 
条目
将被传递一个表单post的映射。以下是一个非常糟糕的函数,用于从所述映射中获取值并将其传递给
创建条目

(defn entry [request]
  (apply create-entry (reduce #(conj %1 (Integer/parseInt (get (get request :params) %2))) [] '(:count :day))))

这是一个补丁,直到长期使用它的人能够给出更好的答案。

当然有一个更简洁的方法。但是,将星号行更改为以下内容并添加函数会起作用:

(POST "/", [], entry) 
条目
将被传递一个表单post的映射。以下是一个非常糟糕的函数,用于从所述映射中获取值并将其传递给
创建条目

(defn entry [request]
  (apply create-entry (reduce #(conj %1 (Integer/parseInt (get (get request :params) %2))) [] '(:count :day))))

这是一个补丁,直到长期使用它的人能够给出更好的答案。

您可以将的Compojure绑定与以下内容一起使用:


您可以使用的Compojure绑定以及: