为什么mongoose在找不到结果时总是返回null而不是错误?
Person.findOne({ 'name': 'Ghost' }, function (err, person) {
console.log(err); // null
if (err) return handleError(err);
});
幽灵'在我的数据库中不存在所以我期待一个错误,但我得到null。为什么?如何才能得到错误?
答案 0 :(得分: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';
}
});
答案 1 :(得分:2)
Mongoose使用err
用于内部错误,例如验证失败等。如果查询成功完成(包含或不包含结果),err
将包含null
。
什么文件说:
将回调传递给Mongoose中的查询的任何地方,即回调 遵循模式
callback(error, results)
。结果取决于什么 关于操作:对于findOne()
,它是一个潜在的空单 文档,find()
文档列表,count()
文档数量,update()
受影响的文档数量等.API文档 模型提供了有关传递给回调的内容的更多细节。