使用route调用函数时出错

时间:2017-07-03 00:44:58

标签: postgresql clojure

我已经写了这个函数来在数据库中插入一个“帐户”:

(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,我试图转换它但是没有成功。

1 个答案:

答案 0 :(得分:1)

这是因为该路线正在返回一个参数。参数是字符串。

如果您改变路线是这样的:

(defroutes app-routes (GET "/:account" [account] (account/create-account (Integer/parseInt account))) (route/not-found "Not Found"))

它应该有用。