J'ai trouvé que le validateur Mongoose ObjectId fonctionne pour valider des objectId valides, mais j'ai trouvé quelques cas où des identifiants invalides étaient considérés comme valides. (par exemple :toute chaîne de 12 caractères)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
Ce qui a fonctionné pour moi, c'est de convertir une chaîne en objectId, puis de vérifier que la chaîne d'origine correspond à la valeur de chaîne de l'objectId.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
Cela fonctionne parce que les identifiants valides ne changent pas lorsqu'ils sont convertis en ObjectId, mais une chaîne qui obtient une valeur fausse valide changera lorsqu'elle est convertie en objectId.