Don't seq the underlying cursor in the query DSL
map will work over the cursor itself because it is Iterable. This both avoids silly NPEs and follows the common sense of finder functions: they must return an empty sequence when there are no results, not nil.
This commit is contained in:
parent
4ce56573cb
commit
787d2d299d
3 changed files with 16 additions and 2 deletions
|
|
@ -1,5 +1,14 @@
|
|||
## Changes between 1.0.0-rc1 and 1.0.0-rc2
|
||||
|
||||
### Query DSL no longer seq()s the cursor
|
||||
|
||||
Query DSL will no longer apply `clojure.core/seq` to the underlying cursor, thus guaranteeing to return an empty
|
||||
sequence when there are no results. This gives developers better control over what do they want to get back:
|
||||
an empty sequence or nil. In the latter case, they will just manually apply `clojure.core/seq` to the
|
||||
result.
|
||||
|
||||
|
||||
|
||||
### More flexible monger.collection/ensure-index and monger.collection/create-index
|
||||
|
||||
`monger.collection/ensure-index` and `monger.collection/ensure-index` now accept fields to index as a collection
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@
|
|||
(when read-preference
|
||||
(.setReadPreference cursor read-preference))
|
||||
(map (fn [x] (from-db-object x keywordize-fields))
|
||||
(seq cursor))))
|
||||
cursor)))
|
||||
|
||||
;;
|
||||
;; API
|
||||
|
|
|
|||
|
|
@ -239,10 +239,15 @@
|
|||
result3 (with-collection coll
|
||||
(find {})
|
||||
(paginate :page 3 :per-page 3)
|
||||
(sort { :title 1 }))
|
||||
result4 (with-collection coll
|
||||
(find {})
|
||||
(paginate :page 10 :per-page 3)
|
||||
(sort { :title 1 }))]
|
||||
(is (= [doc1 doc5 doc7] result1))
|
||||
(is (= [doc2 doc6 doc4] result2))
|
||||
(is (= [doc3] result3))))
|
||||
(is (= [doc3] result3))
|
||||
(is (empty? result4))))
|
||||
|
||||
|
||||
(deftest combined-querying-dsl-example1
|
||||
|
|
|
|||
Loading…
Reference in a new issue