MongoDB ObjectId: MongoDB crea una identificación única de 12 bytes para cada objeto utilizando la marca de tiempo de la creación del objeto respectivo.
Este ObjectId se puede usar para apuntar de manera única a un objeto específico en la base de datos.
Estructura:
- Valor de marca de tiempo de 4 bytes
- Valor aleatorio de 5 bytes
- Contador incremental de 3 bytes, inicializado a un valor aleatorio
Se ve así, 507f191e810c19729de860ea
Durante un flujo de trabajo de back-end normal, el ObjectId podría recibirse en función de algunos cálculos u operaciones del usuario. Estos pueden dar como resultado un ObjectId no válido y la consulta de la base de datos con un ObjectId incorrecto genera una excepción que luego se maneja más adelante.
En este artículo, aprenderemos cómo comprobar si una string es un ObjectId de MongoDB válido.
Ejemplos:
594ced02ed345b2b049222c5 --> Valid MongoDB ObjectId geeks --> Invalid MongoDB ObjectId
requisitos previos:
Mongoose y MongoDB proporcionan una función muy útil en ObjectId, es decir , ObjectId.isValid («some_id») para validar una string para la identificación correcta de MongoDB.
ObjectId se puede importar desde mongodb nativo , así como desde el paquete mongoose .
Importe ObjectId desde paquetes mongodb o mongoose:
- Usando Mongodb:
const ObjectId = require('mongodb').ObjectId; or const mongodb, {ObjectId} = require('mongodb');
Usando mangosta:
const ObjectId = require('mongoose').Types.ObjectId; or const mongoose = require('mongoose'); ObjectId = mongoose.Types.ObjectId;Id;
Sin embargo, ObjectId.isValid(id) devuelve verdadero incluso para strings no válidas con una longitud de 12.
Por ejemplo:
ID de string | IdObjeto.isValid(id) | Validación esperada |
594ced02ed345b2b049222c5 | verdadero | verdadero |
frikis | falso | falso |
arribaarribaarribaarriba | verdadero X | falso |
frikisfogeeks | verdadero X | falso |
Para evitar tales casos, se puede agregar otra verificación después del validador predeterminado que devolvería verdadero o falso según la condición (nuevo ObjectId creado a partir de una string) convertido a string === string
, es decir, (String) (nuevo ObjectId (id)) = == id
Se puede crear una función de la siguiente manera para verificar si una string es un ObjectId válido o no:
const ObjectId = require('mongoose').Types.ObjectId; function isValidObjectId(id){ if(ObjectId.isValid(id)){ if((String)(new ObjectId(id)) === id) return true; return false; } return false; }
Javascript
// Requiring ObjectId from mongoose npm package const ObjectId = require('mongoose').Types.ObjectId; // Validator function function isValidObjectId(id){ if(ObjectId.isValid(id)){ if((String)(new ObjectId(id)) === id) return true; return false; } return false; } // Loading testcases into array const testStrings = [ "594ced02ed345b2b049222c5","geeks", "toptoptoptop","geeksfogeeks"]; // Validating each test case for(const testcase of testStrings){ if(isValidObjectId(testcase)) console.log(testcase + " is a valid MongodbID"); else console.log(testcase + " is not a valid MongodbID"); }
Salida: Los resultados de esta función son:
ID de string | esValidObjectId(id) | Validación esperada |
594ced02ed345b2b049222c5 | verdadero | verdadero |
frikis | falso | falso |
arribaarribaarribaarriba | falso | falso |
frikisfogeeks | falso | falso |
Publicación traducida automáticamente
Artículo escrito por omkarphansopkar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA