sql >> Base de Datos >  >> NoSQL >> MongoDB

¿Puedo determinar si una cadena es un ObjectID de MongoDB?

Descubrí que el validador de ObjectId de mongoose funciona para validar objectIds válidos, pero encontré algunos casos en los que las identificaciones no válidas se consideraban válidas. (por ejemplo:cualquier cadena de 12 caracteres)

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

Lo que ha funcionado para mí es enviar una cadena a un objectId y luego verificar que la cadena original coincida con el valor de cadena del objectId.

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

Esto funciona porque las identificaciones válidas no cambian cuando se convierten en un ObjectId, pero una cadena que obtiene un falso válido cambiará cuando se convierte en un objectId.