Открих, че валидаторът на mongoose ObjectId работи за валидиране на валидни objectId, но открих няколко случая, когато невалидните идентификатори се считат за валидни. (напр.:произволен низ от 12 знака)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
Това, което работи за мен, е прехвърлянето на низ към objectId и след това проверката дали оригиналният низ съответства на стойността на низа на objectId.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
Това работи, защото валидните идентификатори не се променят, когато се прехвърлят към ObjectId, но низ, който получава фалшива валидност, ще се промени, когато се прехвърля към objectId.