MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Posso determinar se uma string é um ObjectID do MongoDB?


Descobri que o validador ObjectId do mangusto funciona para validar objectIds válidos, mas encontrei alguns casos em que IDs inválidos foram considerados válidos. (por exemplo:qualquer string de 12 caracteres)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true

O que tem funcionado para mim é lançar uma string para um objectId e, em seguida, verificar se a string original corresponde ao valor da string do objectId.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2

Isso funciona porque os ids válidos não mudam quando convertidos para um ObjectId, mas uma string que obtém um falso válido mudará quando convertida para um objectId.