요청의 모든 문자열 개체 ID를 ObjectId 개체로 변환하기위한 미들웨어를 작성하려고합니다.미들웨어 단계에서 경로 매개 변수에 대한 액세스
내가 사용하여이를 달성하고 다음이 JSON오고 모든 PARAMS을 위해 노력하고 있습니다
(defn get-object-id
[id]
(when (and (string? id) (re-matches object-id-regex id))
(ObjectId. id)))
(defn maybe-obj->object-id [obj]
(or (get-object-id obj) obj))
(defn- convert-string->object-ids [obj]
(cwalk/postwalk
(partial pcommon/maybe-obj->object-id) obj))
(defn warp-params-string->objectid
"convert strings to object ids"
[handler]
(fn [request]
(handler (update-in request [:params] convert-string->object-ids))))
는 등 PARAMS을 요청하지만이 예를 들어, 경로 PARAMS에 적용되지
: url에 대한 fst "/ : fst". 나는 GET 매크로를 보았고 route params는 그 매크로의 어딘가에 주입되었다. 그러나 GET/POST 등이 마지막으로 실행되기 때문에 나의 미들웨어는 이것들에 접근 할 수 없다. 이것을 달성하는 어떤 우아한 방법.
아마 도중의 매개 변수를 얻으려면'(처리기 (update-in request ...)를 (update-in (요청 처리기) ... '로 변경하십시오.) – noisesmith
@ noisesmith는 GET 요청을 처리하는 동안 해당 객체가 필요하기 때문에 도움이되지 않습니다. –