这周我开始学习 Clojure,特别是我正在学习 Luminus 的 Web 开发。因为我想了解 CRUD 过程,所以我设置了一个函数来将我的帖子保存到数据库中:
(defn save-post! [{:keys [params]}]
(if-let [errors (validate-post params)]
(-> (response/found "/posts")
(assoc :flash (assoc params :errors errors)))
(do
(db/save-post!
(assoc params :created_at (java.util.Date.)))
(response/found "/posts"))))
查询非常基本:
-- :name save-post! :! :n
-- :doc creates a new post record
INSERT INTO posts
(title, body, active, created_at)
VALUES (:title, :body, :active, :created_at)
但 HTML 表单有一个复选框字段:
<input type="checkbox" name="active" value="1">Published<br />
未选中时,不发送该字段,SQL 插入查询发送错误消息“No active field”。如何检查是否设置了元素“活动”并将其添加到“参数”中作为真或假?
就像是:
(assoc params :active (if (nil? params/active) false true))
在 ":created_at (java.util.Date.)" 行之后。