Ik ontdekte dat de mongoose ObjectId-validator werkt om geldige objectIds te valideren, maar ik vond een paar gevallen waarin ongeldige ID's als geldig werden beschouwd. (bijv. een willekeurige tekenreeks van 12 tekens)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
Wat voor mij heeft gewerkt, is het casten van een string naar een objectId en vervolgens controleren of de originele string overeenkomt met de stringwaarde van de objectId.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
Dit werkt omdat geldige id's niet veranderen wanneer ze naar een ObjectId worden gecast, maar een tekenreeks die een false valid krijgt, verandert wanneer ze naar een objectId worden gecast.