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

ID curto e fácil de usar para mongo


Você está tentando converter uma base 16 (hexadecimal) para base 36 (26 caracteres em alfabeto mais 10 números). Uma maneira simples pode ser simplesmente usar parseInt 's parâmetro radix para analisar o id hexadecimal e, em seguida, chamar .toString(36) para converter isso em base-36. O que transformaria "507f191e810c19729de860ea" em "VDFGUZEA49X1V50356", reduzindo o comprimento de 24 para 18 caracteres.
function toBase36(id) {
  var half = Math.floor(id.length / 2);
  var first = id.slice(0, half);
  var second = id.slice(half);
  return parseInt(first, 16).toString(36).toUpperCase()
       + parseInt(second, 16).toString(36).toUpperCase();
}


function toBase36(id) {
  var half = Math.floor(id.length / 2);
  var first = id.slice(0, half);
  var second = id.slice(half);
  return parseInt(first, 16).toString(36).toUpperCase()
       + parseInt(second, 16).toString(36).toUpperCase();
}

// Ignore everything below (for demo only)
function convert(e){ if (e.target.value.length % 2 === 0) base36.value = toBase36(e.target.value) }
var base36 = document.getElementById('base36');
var hex = document.getElementById('hex');
document.getElementById('hex').addEventListener('input', convert, false);
convert({ target: { value: hex.value } });
input { font-family: monospace; width: 15em; }
<input id="hex" value="507f191e810c19729de860ea">
<input id="base36" readonly>