2013-08-13 36 views
24

Tôi hơi bối rối khi đọc tài liệu về Mongoose.Điều gì được trả về từ truy vấn Mongoose không tìm thấy kết quả phù hợp?

Nếu tôi chạy một truy vấn trong mongoose không khớp với tài liệu nào trong bộ sưu tập, giá trị của errresults trong hàm gọi lại callback(err, results) là gì? Tôi chỉ không biết Mongoose coi là "lỗi". Là một nhà toán học, trả lại bộ trống (ví dụ: results mảng trống) có vẻ hoàn toàn hợp lệ và không phải là "lỗi" - truy vấn được thực hiện tốt, không có tài liệu nào phù hợp. Mặt khác, một số có thể coi đó là "lỗi". Từ tài liệu mongoose, một trong hai:

  1. err = null, results = []
  2. err = null, results = null
  3. err = Tài liệu lỗi, results = null

Trả lời

28

Nó phụ thuộc vào truy vấn. Nếu đó là find, thì results == []. Nếu đó là findOne, thì results == null. Không có lỗi nếu mọi thứ khác là ok.

+0

Đoán có ba lựa chọn;) – Colin

+0

Vì vậy, trong 'find' trường hợp của nó 1, trong 'findOne' trường hợp 2 của nó? – Colin

+0

Bạn có thể sử dụng nó như 'var query = Model.find();' hoặc 'var query = Model.findOne();' Sau chỉnh sửa: tôi chỉ nhìn thấy chỉnh sửa của bạn, quả thật vậy, 3 tùy chọn :) Bạn đã có các trường hợp đúng. – randunel

4

Nếu điều kiện là hợp lệ nhưng không có kết quả được tìm thấy:

  • find: errnull, result[]

  • findOnefindById: errnull, resultnull

Tuy nhiên, nếu một số điều kiện không hợp lệ (ví dụ: lĩnh vực là string nhưng bạn vượt qua một object, hoặc bạn vượt qua một hợp lệ _id)

Đối với tất cả ba: err{..}, resultundefined

Các vấn đề liên quan