MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Posso determinare se una stringa è un ObjectID MongoDB?

Ho scoperto che il validatore ObjectId mangusta funziona per convalidare objectId validi, ma ho trovato alcuni casi in cui gli ID non validi erano considerati validi. (es:qualsiasi stringa di 12 caratteri)

var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true

Ciò che ha funzionato per me è eseguire il cast di una stringa su un objectId e quindi verificare che la stringa originale corrisponda al valore della stringa di objectId.

new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2

Questo funziona perché gli ID validi non cambiano quando si esegue il cast a un ObjectId, ma una stringa che ottiene un valore falso valido cambierà quando si esegue il cast a un objectId.