What is returned from Mongoose query that finds no matches?

22,415

Solution 1

It depends on the query. If it is a find, then results == []. If it is a findOne, then results == null. No errors if everything else is ok.

Solution 2

If conditions were valid but no matches were found:

  • find: err is null, result is []

  • findOne and findById: err is null, result is null

However, if some condition was invalid (e.g. field is string but you pass an object, or you pass an invalid _id)

For all three: err is {..}, result is undefined

Share:
22,415

Related videos on Youtube

Colin
Author by

Colin

Updated on July 09, 2022

Comments

  • Colin
    Colin almost 2 years

    I'm a little confused reading the Mongoose documentation.

    If I run a query in mongoose which matches no documents in the collection, what are the values of err and results in the callback function callback(err, results)? I just don't know what Mongoose considers an "error". As a mathematician, returning the empty set (i.e. results array empty) seems perfectly valid and shouldn't be an "error" - the query executed fine, there was just no matching documents. On the other hand, some may consider it an "error". From mongoose docs, either:

    1. err = null, results = []
    2. err = null, results = null
    3. err = error document, results = null
  • Colin
    Colin almost 11 years
    Guess there is three options ;)
  • Colin
    Colin almost 11 years
    So, in find its case 1, in findOne its case 2?
  • randunel
    randunel almost 11 years
    You can use it like var query = Model.find(); or var query = Model.findOne(); Later edit: i just saw your edit, indeed, 3 options :) You got the cases right.
  • Lion789
    Lion789 almost 9 years
    What are the results if you use .populate?