マングースのObjectIdバリデーターが有効なobjectIdを検証するように機能することがわかりましたが、無効なIDが有効であると見なされるケースがいくつか見つかりました。 (例:任意の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にキャストしても有効なIDは変更されないが、objectIdにキャストするとfalseの有効な文字列が変更されるためです。