What's Mongoose error Cast to ObjectId failed for value XXX at path "_id"?
Solution 1:
Mongoose's findById
method casts the id
parameter to the type of the model's _id
field so that it can properly query for the matching doc. This is an ObjectId but "foo"
is not a valid ObjectId so the cast fails.
This doesn't happen with 41224d776a326fb40f000001
because that string is a valid ObjectId.
One way to resolve this is to add a check prior to your findById
call to see if id
is a valid ObjectId or not like so:
if (id.match(/^[0-9a-fA-F]{24}$/)) {
// Yes, it's a valid ObjectId, proceed with `findById` call.
}
Solution 2:
Use existing functions for checking ObjectID.
var mongoose = require('mongoose');
mongoose.Types.ObjectId.isValid('your id here');