0

我正在使用 clojure 从多个 MongoDB 集合中获取数据。

(ns mongofetch
  (:require [somnium.congomongo :as m]))

(m/with-mongo (m/make-connection "testdb") (mapv m/fetch coll))

这里,coll 是存储集合名称的向量。这工作正常,因为它从多个 MongoDB 集合中获取数据并返回一个包含序列的向量(返回每个集合的序列)和文档。但是,我在使用map而不是mapv(用于以下代码片段)时遇到错误。

(m/with-mongo (m/make-connection "testdb") (map m/fetch coll))

错误是 -java.lang.AssertionError: Assert failed: (connection? conn)

为什么它会抛出一个 AssertionError 以及如何仅使用它来解决它map

4

1 回答 1

1

map是惰性的,通常不应该用于副作用功能。map您的连接在完成处理之前已关闭。如果你真的想使用它,你应该把它包装在一个doall.

(doall (map side-effect! coll))
于 2015-10-27T08:52:21.830 回答