2017-04-06 111 views
0

我正在使用mongoose和Node.Js来公开我的webservices。 当过客户端给我无效的对象ID,我得到的错误如何处理CastError:强制转换为ObjectId的值失败

message: 'Cast to ObjectId failed for value "333333707333371ssss" at path "_id" for model "student"', 

我有很多的模式,使我使用.find和处理无处不在尝试捕捉;它是正确的解决方案? 在整个应用程序中处理这个问题的优雅方式是什么?我想给回一个空回应,因为该对象ID不对应任何东西...

如何处理此错误?

回答

0

Mongoose将在投射此ObjectId时失败,因为它不是有效的。在您拨打.find方法之前,您应该使用猫鼬验证器mongoose.Types.ObjectId.isValid(id)进行检查。请注意,在检查控制器内的验证时,这有点“哈克”。否则,您可能会在回调中发现错误并做出相应的响应。

+0

我应该在每个控制器中写入isValid吗?我认为这将是艰难的。是否有任何替代方案 – Jocket

+0

比你应该赶上和查找方法的错误。每个回调都有错误和响应,因此在调用之后,您可以检查是否有错误。像.find({},函数(错误,数据){})一样 –

相关问题