¿Vale la pena hacer un script o lo hago a mano? - Parsear un string ID de mongo express
- Patricia Vazquez
- 21 feb 2021
- 2 Min. de lectura
Si trabajáis con mongo, y utilizáis el cliente de mongo-express os habréis dado cuenta de que si utilizáis UUID, no los parsea correctamente. Más de una vez me he visto en la tesitura de ponerme a hacerlo a mano.
Voy al cliente y me dan esto:

Y por no perder el tiempo a veces, porque estoy muy enfrascada en mi tarea, me he puesto a parsearlo a mano ( Lo sé! Fatal!).
Pues hoy, ya estaba un poco harta de darme cuenta que cada dos por tres estoy haciendo esto. Y digamos, que he decidido explicaros como abordar/justificar/resolver estos problemas.
Vayamos por partes y analicemos como lo propongo yo:
1 Identificamos el problema: Patricia no quiere perder 2 minutos de su vida cada vez que se enfrente a esto, al no ser algo excepcional, ha calculado que pierde 2 minutos por semana. Al mes ya serían 10 minutos. Al año 120 aproximadamente. Por tanto, esta justificado invertir al menos 10 - 15 minutos de tiempo en esta solución.
2 Alguien ha resuelto este problema antes? : Patricia no quiere ponerse a inventar la rueda si alguien ya la ha inventado. Busca en google ( en inglés ofc ) durante 1-2 minutos, como lo solucionan otras personas. Balancea el tiempo que le cuesta implementar esas soluciones frente a un posible script muy sencillo. 5-10 minutos aproximadamente entender la solución de esa persona y probarlo, frente a 5 minutos que le costaría hacer el script.
3 Implementar la solución! : Patricia se pone manos a la obra.
Cómo es algo extremadamente sencillo, he decidido compartir el proceso.
Esto es lo que tenemos y el resultado que esperamos.
19acd01e28e842008dab789fe4543bd4 -> 19acd01e-28e8-4200-8dab-789fe4543bd4
1 Creamos un script para nodeJS, pero con cualquier framework JS también vale. En mi caso, he creado un fichero script-parser-id.js.
2 Vamos a pasar por argumentos al script, el id que queremos parsear.
node script-parser-id.js 19acd01e28e842008dab789fe4543bd4
3 En nuestro script, recogemos los argumentos y declararemos el primero como stringId.
const myArgs = process.argv.slice(2);
console.log('myArgs: ', myArgs[0]);
const stringId = myArgs[0];
4 Declaramos como let ( ya que vamos a ir sobrescribiendo en un bucle) el parsedId.
let parsedId = '';
5 Empezamos nuestro for, dependiendo de la longitud de nuestro stringId (que en nuestro caso siempre va a ser la misma).
for (var i = 1; i < stringId.length; i++) {
parsedId = parsedId.concat(stringId.charAt(i));
if (i === 8 || i === 12 || i === 16 || i === 20){
parsedId = parsedId.concat('-');
}
}
console.log(parsedId);
Esto podría parecer que funciona, pero... NO. Recordamos que en JS, se empieza a contar desde el 0.
6 Ahora sí, empezamos a contar desde 0, por tanto las posiciones que hemos de añadir el guión también empiezan desde este número.
for (var i = 0; i < stringId.length; i++) {
parsedId = parsedId.concat(stringId.charAt(i));
if (i === 7 || i === 11 || i === 15 || i === 19){
parsedId = parsedId.concat('-');
}
}
console.log(parsedId);
7 Nuestro resultado deseado.

PD: No parseeis tanto como el de la imagen.

Comments