假设我有entry具有 ref-to-many 属性的实体:entry/groups。我应该如何构建查询以查找其:entry/groups属性包含我所有输入外部 ID 的实体?
下一个伪代码将更好地说明我的问题:
[2 3] ; having this as input foreign ids
;; and having these entry entities in db
[{:entry/id "A" :entry/groups [2 3 4]}
{:entry/id "B" :entry/groups [2]}
{:entry/id "C" :entry/groups [2 3]}
{:entry/id "D" :entry/groups [1 2 3]}
{:entry/id "E" :entry/groups [2 4]}]
;; only A, C, D should be pulled
Run Code Online (Sandbox Code Playgroud)
作为 Datomic/Datalog 的新手,我用尽了所有选项,因此感谢您提供任何帮助。谢谢!
我有一个在后端使用Clojure和在前端使用ClojureScript的Web应用程序,它由几个页面组成,每个页面都需要适当的构建js文件.
现在我知道cljsbuild可以构建单独的构建(如果在: config文件的build部分中指定),前提是每个构建都有自己的文件夹.
问题是:现在我需要在每个文件夹中复制一些共享代码才能正确构建.除此之外,我必须为即使是简单的cljs文件创建全新的文件夹,更不用说每次我的project.clj 的:builds部分都要编辑.
所以,它是2016年,到目前为止,我所见过的关于ClojureScript的所有教程都是针对单页应用程序的.我正在寻找什么资源或最佳实践,我错过了什么?
如何在标准的多页Clojure堆栈Web应用程序中使用ClojureScript?
谢谢.
我需要根据需要即时创建excel文件,并使用clojure.ring通过响应将其提供给用户。
我使用docjure创建一个excel文件并将其写入输出流(请参见以下函数:https : //github.com/mjul/docjure/blob/master/src/dk/ative/docjure/spreadsheet.clj#L86) ,然后从中获得输出流piped-input-stream(请参阅https://github.com/ring-clojure/ring/blob/1.5.0/ring-core/src/ring/util/io.clj#L11)。
代码的相关部分:
(defn excel-response
[params]
(-> (response (piped-input-stream (fn [out-stream]
(create-excel-into-stream out-stream
params))))
(assoc :headers {"Content-Type"
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"})))
Run Code Online (Sandbox Code Playgroud)
使用此功能,由于某些原因,我总是得到一个空的.xlsx文件。piped-input-stream在我可以将其用作响应主体之前,似乎已经结束。
我如何正确使用它,以便可以写入输出流,将其传递给输入流,然后用作响应主体?
Clojure初学者/中级,
我有一个大的XML文件(~240M),我需要逐项处理ETL目的.有一些run-processing功能,它有许多副作用,数据库交互,写入日志等.
当我将所述函数应用于文件时,一切运行顺利:
...
(with-open [source (-> "in.xml"
io/file
io/input-stream)]
(-> source
xml/parse
((fn [x]
;; runs fine
(run-processing conn config x)))))
Run Code Online (Sandbox Code Playgroud)
但是当我将相同的函数放入任何类型的循环(例如doseq)时,我得到OutOfMemoryException(GC Overhead).
...
(with-open [source (-> "in.xml"
io/file
io/input-stream)]
(-> source
xml/parse
((fn [x]
;; throws OOM GC overhead exception
(doseq [i [0]]
(run-processing conn config x))))))
Run Code Online (Sandbox Code Playgroud)
我不明白,头部保留在哪里导致GC开销异常?我已经尝试过run!,甚至loop recur没有doseq- 同样的事情发生了.
我的run-processing功能一定有问题吗?那么为什么我直接运行时表现良好?有点困惑,任何帮助是指定的.
我正在尝试编写一个自定义中间件,通过检查请求中是否存在以下内容来检查用户是否已通过身份验证.
(defn wrap-authenticated [handler]
(fn [{user :user :as req}]
(if (nil? user)
(do
(println "unauthorized")
{:status 401 :body "Unauthorized." :headers {:content-type "text/text"}})
(handler req))))
(def app
(wrap-authenticated (wrap-defaults app-routes (assoc site-defaults :security false))))
Run Code Online (Sandbox Code Playgroud)
但是当我尝试返回401状态的响应hashmap时,我得到以下异常: WARN:oejs.AbstractHttpConnection:/ main java.lang.ClassCastException:clojure.lang.Keyword无法强制转换为java.lang.String
也许我不理解在Compojure中间件中需要实现的逻辑.如何编写破坏中间件链的中间件,只返回自定义响应或重定向到处理程序?