2013-08-13 9 views
24

Sono un po 'confuso leggendo la documentazione di Mongoose.Cosa viene restituito dalla query di Mongoose che non trova corrispondenze?

Se si esegue una query in mangusta che non corrisponde a nessun documento nella raccolta, quali sono i valori di err e results nella funzione di richiamata callback(err, results)? Non so proprio cosa Mangusta consideri un "errore". Come matematico, restituire il set vuoto (ovvero l'array results vuoto) sembra perfettamente valido e non dovrebbe essere un "errore" - la query eseguita correttamente, non c'erano solo documenti corrispondenti. D'altra parte, alcuni potrebbero considerarlo un "errore". Da documenti mangusta, uno:

  1. err = null, results = []
  2. err = null, results = null
  3. err = documento di errore, results = null

risposta

28

Esso dipende la query. Se è un find, quindi results == []. Se è un findOne, quindi results == null. Nessun errore se tutto il resto è ok.

+0

che ci sia tre opzioni;) – Colin

+0

Così, in 'find' suo caso 1, in 'findOne' il suo caso 2? – Colin

+0

Puoi usarlo come 'var query = Model.find();' o 'var query = Model.findOne();' Più tardi modifica: ho appena visto la tua modifica, anzi, 3 opzioni :) Hai risolto i casi. – randunel

4

Se le condizioni erano validi, ma non si hanno riscontri:

  • find: err è null, result è []

  • findOne e findById: err è null, result è null

Tuttavia, se alcune condizioni non erano valide (ad es. campo è string ma si passa un object, o si passa un invalido _id)

Per tutti e tre: err è {..}, result è undefined

Problemi correlati