2

Working with UUID in Node

 1 year ago
source link: https://masteringjs.io/tutorials/node/uuid
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Working with UUID in Node

Mar 28, 2023

As of Node v14.17, Node's built-in crypto module has a randomUUID() function that you can use to generate a new v4 UUID. crypto.randomUUID() returns the UUID as a string.

const crypto = require('crypto');

crypto.randomUUID(); // '8fb2a405-503e-4344-8543-6e8d93f4c9ee'
typeof crypto.randomUUID(); // 'string'

Other UUID Versions

Node.js' built-in UUID functionality only supports UUID v4. For other UUID versions, or older versions of Node that don't support UUIDs, you should use the uuid npm module.

const uuid = require('uuid');

// '2ebcdfa0-cd6e-11ed-9477-575477630084'
uuid.v1();

// '546b33ef-f0d6-5810-8089-573a2a506dd5'
uuid.v5('test', '2ebcdfa0-cd6e-11ed-9477-575477630084');

UUID Alternatives

UUIDs are just one alternative for quickly generating probably unique ids. Other alternatives include MongoDB ObjectIds and nanoid. MongoDB ObjectIds are shorter and generally work better with MongoDB, and nanoids are even shorter.

const mongoose = require('mongoose');

new mongoose.Types.ObjectId(); // '6422ef942841d91d8c6ca631'
const nanoid = require('nanoid');

With Mongoose

Mongoose has basic support for UUIDs, including UUID as a schema type. The key detail to note is that, while Mongoose converts UUIDs to strings in Node.js, Mongoose stores UUIDs using MongoDB's native UUID type.

const authorSchema = new Schema({
  _id: Schema.Types.UUID, // Can also do `_id: 'UUID'`
  name: String
});

const Author = mongoose.model('Author', authorSchema);

const author = new Author({ name: 'J.R.R. Tolkien' });
console.log(typeof author._id); // 'string'

await author.save();

const doc = await Author.collection.findOne({ _id: author._id });
doc._id; // 'new UUID("09190f70-3d30-11e5-8814-0f4df9a59c41")'
doc._id.constructor.name; // 'UUID'

More Node Tutorials


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK