Clojure 复合解构生成整数。。。不是整数?

Clojure 复合解构生成整数。。。不是整数?,clojure,key,compojure,datomic,Clojure,Key,Compojure,Datomic,此Compojure获取具有硬编码id的路由 ;posts (GET "/post:id" [id :as request] ;(str "the post id is... " id) (def email (get-in request [:session :ze-auth-email])) (vb/post-page-draw email 17592186045616)) 工作^ 但是,使用符号id(在最后一行) 其中url为: localhost:4000/po

此Compojure获取具有硬编码id的路由

   ;posts 
(GET "/post:id" [id :as request]
  ;(str "the post id is... " id)
   (def email (get-in request [:session :ze-auth-email]))
   (vb/post-page-draw email 17592186045616))
工作^

但是,使用符号id(在最后一行)

其中url为:

localhost:4000/post17592186045616  ;;i.e. the number from above
(编辑:post和id之间没有冒号)

返回huuuge堆栈跟踪,主要在

java.lang.Exception
processing rule: (q__7967 ?title ?content ?tags ?eid), 
message: processing clause: [?eid post/title ?title], 
message: Cannot resolve key: 17592186045616
所以,我已经能够将它分离出来进行复合分解,只是不喜欢我传递的整数。。。如何让我的(vb/post page draw电子邮件id)使用通过URL传递的参数?

尝试:

(vb/post页面绘制电子邮件(Long.id))

id
作为字符串返回,您需要将其转换为数字(例如使用
Long/parseString
),您不应该嵌套
def
,而是使用
let
def
是全局的,而不是局部的。cgrand你是个天才。谢谢你!好主意。。。但我得到了以下信息:输入字符串的java.lang.NumberFormatException:“17592186045617”得到了。你肯定是在正确的轨道上。用(Long/valueOf id)解决了它哦!这是一个漫长的过程!也许这是可行的,而且短而长。
java.lang.Exception
processing rule: (q__7967 ?title ?content ?tags ?eid), 
message: processing clause: [?eid post/title ?title], 
message: Cannot resolve key: 17592186045616