Solución:
Instale el paquete uuid de NPM (fuentes: https://github.com/kelektiv/node-uuid):
npm install uuid
y utilícelo en su código:
var uuid = require('uuid');
Luego crea algunos identificadores …
// Generate a v1 (time-based) id
uuid.v1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
// Generate a v4 (random) id
uuid.v4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'
** ACTUALIZACIÓN 3.1.0
El uso anterior está en desuso, así que use este paquete así:
const uuidv1 = require('uuid/v1');
uuidv1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
const uuidv4 = require('uuid/v4');
uuidv4(); // -> '110ec58a-a0f2-4ac4-8393-c866d813b8d1'
** ACTUALIZAR 7.x
Y ahora el uso anterior también está obsoleto, así que use este paquete así:
const { v1: uuidv1 } = require('uuid');
uuidv1(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
const { v4: uuidv4 } = require('uuid');
uuidv4(); // -> '6c84fb90-12c4-11e1-840d-7b25c5ee775a'
La forma más rápida posible de crear una cadena aleatoria de 32 caracteres en Node es utilizando native crypto
módulo:
const crypto = require("crypto");
const id = crypto.randomBytes(16).toString("hex");
console.log(id); // => f9b327e70bbcf42494ccb28b2d98e00e
edit: shortid ha quedado obsoleto. Los mantenedores recomiendan usar nanoid en su lugar.
Otro enfoque es usar el paquete shortid de npm.
Es muy fácil de usar:
var shortid = require('shortid');
console.log(shortid.generate()); // e.g. S1cudXAF
y tiene algunas características atractivas:
ShortId crea identificadores únicos increíblemente cortos y no secuenciales compatibles con URL. Perfecto para acortadores de URL, ID de MongoDB y Redis, y cualquier otra identificación que los usuarios puedan ver.
- De forma predeterminada, de 7 a 14 caracteres aptos para URL: AZ, az, 0-9, _-
- No secuenciales, por lo que no son predecibles.
- Puede generar cualquier número de identificadores sin duplicados, incluso millones por día.
- Las aplicaciones se pueden reiniciar cualquier cantidad de veces sin posibilidad de repetir una identificación.