2016-07-12 2 views
1

結果が見つからない場合、mongooseは常にエラーの代わりにnullを返します。私は、エラーを期待していますので、Mongoose - 結果が見つからなかった場合、エラーの代わりに常にnullを返しますか?

Person.findOne({ 'name': 'Ghost' }, function (err, person) { 
    console.log(err); // null 
    if (err) return handleError(err); 
}); 

人の幽霊は私のDBに存在しませんが、私の代わりにnullを取得します。どうして?代わりにエラーを得る方法はありますか?

答えて

3

mongooseはエラーが発生した場合にのみエラーを返すため、結果を見つけることはエラーではありません。あなたはnullを得た場合は、次のように、応答を処理することができますなど、検証に失敗のような内部エラーのために

Person.findOne({ 'name': 'Ghost' }, function (err, person) { 
    if(person === null) { 
    console.log('No results found'); 
    } 
    if (err) return handleError(err); 
}); 

または

Person.findOne({ 'name': 'Ghost' }, function (err, person) {  
    if (err) { 
    return handleError(err); 
    } else if (person) { 
    return person; 
    } else { 
    return 'No results found'; 
 } 
}); 
+0

aww ...得ました。ありがとう。 – laukok

2

マングース使用err(結果にか)正常に完了したクエリerrれますnullが含まれています。

は、どのようなドキュメント言う:

どこでもコールバックはマングースで、クエリに渡され、コールバック パターンcallback(error, results)に従います。どのような結果は、操作に を依存している:findOne()にとっては、潜在的にヌルシングル 文書、文書のfind()リスト、 モデルのAPIドキュメントが提供するなどの文書、影響を受けた文書の update()数のcount()数ですコールバックに渡される内容の詳細。

+0

基本的にこれは最初の回答と同じです。 –

関連する問題