MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Kann ich feststellen, ob eine Zeichenfolge eine MongoDB-Objekt-ID ist?

Ich habe festgestellt, dass der Mungo-ObjectId-Validator funktioniert, um gültige Objekt-IDs zu validieren, aber ich habe einige Fälle gefunden, in denen ungültige IDs als gültig angesehen wurden. (zB:eine beliebige 12 Zeichen lange Zeichenfolge)

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

Bei mir hat es funktioniert, einen String in eine objectId umzuwandeln und dann zu prüfen, ob der ursprüngliche String mit dem Stringwert der objectId übereinstimmt.

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

Dies funktioniert, weil sich gültige IDs nicht ändern, wenn sie in eine ObjectId umgewandelt werden, aber eine Zeichenfolge, die ein falsches gültiges Ergebnis erhält, sich ändert, wenn sie in eine objectId umgewandelt wird.