我已经写了这个函数来在数据库中插入一个“帐户”:
(defn create-account [accountnumber]
(if (= nil (find-by-number accountnumber))
(jdbc/insert! db-spec :accounts {:accountnumber accountnumber})
nil
))
这个测试通过,所以它正在运行的功能:
(testing "create and find-by-number account"
(account/create-account 10)
(is (= 10 ((account/find-by-number 10) :accountnumber)))
)
但是当我尝试使用这条路线时:
(defroutes app-routes
(GET "/:account" [account] (account/create-account account))
(route/not-found "Not Found"))
(def app
(-> app-routes
rmp/wrap-params
wrap-json-response
wrap-json-body))
我收到了这个错误:
org.postgresql.util.PSQLException
错误:列“accountnumber”的类型为整数但表达式为 类型字符变化提示:您需要重写或转换 表达
验证类型,我可以看到,当我运行测试时,accountnumber类型是java.lang.Long,当它来自路由时,它的类型是java.lang.String,我试图转换它但是没有成功。
答案 0 :(得分:1)
这是因为该路线正在返回一个参数。参数是字符串。
如果您改变路线是这样的:
(defroutes app-routes
(GET "/:account" [account] (account/create-account (Integer/parseInt account)))
(route/not-found "Not Found"))
它应该有用。