迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Node.js >

在 Node JS 中生成唯一 ID

作者:迹忆客 最近更新:2023/05/09 浏览次数:

在 Microsoft 版本中也称为全局唯一标识符,通用唯一标识符是用于创建唯一 ID 的 128 位标签。

这些 ID 通常用于识别数据库中的实体,以唯一地记录个人身份。在这种情况下使用时,这些 ID 通常被称为数据库键。

如何在 Node JS 中生成唯一 ID

世界上任何人生成两个相似的 UUID 的可能性几乎为零。这就是为什么它们被称为普遍独特的原因。

互联网工程任务组提出了一份名为 RFC 的出版物,该出版物定义了一组标准,用于创建生成这些 UUID 以保持其在全球范围内的唯一性的算法。

有几个 Node js 模块用于在 Node JS 中创建 UUID。但是,最常用的包是 UUID 包。

我们可以使用下面的 npm 包安装程序命令安装 UUID 包。

 npm install uuid

这个包可以与 Node js 8、10、12 和 14 一起使用,但它也是跨平台的,这意味着我们可以使用 ES6 syntaxCommonJS 来安全地生成加密的大量随机数。

现在,由于 UUID 包支持 RFC4122 版本 1、3、4 和 5 UUID,这意味着我们可以根据需要生成不同类型的 UUID。

版本 1 是基于时间的 UUID,它使用随机数、日期时间值和设备的 MAC 地址的组合来生成通用唯一 ID。

第 4 版 UUID 可能是最简单的 ID,因为它们是从字符 a 到 z 和 0 到 9 生成的。

另一方面,版本 3 和 5 UUID 使用预先存在的命名空间日期和名称数据来生成随机的字母数字 UUID。

使用 CommonJS 语法,我们可以生成 UUID 的版本 4 和版本 1,如下所示。

const { v4: uuidv4 } = require('uuid');
const {v1: uuidv1 } = require('uuid');
console.log(uuidv4());
console.log(uuidv1());

输出结果:

ddd3b16f-2b6c-4fef-9f21-aaa52d1f983c
69b42bc0-7a15-11ec-a689-5191cd2179b0

或者,我们可以使用 ES6 模块语法而不是 CommonJS,并且仍然生成任何版本的 UUID,如下所示。

请记住在 package.json 中设置 type: module 以使用此语法。

import { v4 as uuidv4 } from 'uuid';
import {v1 as uuidv1 } from 'uuid';
 
console.log(uuidv4());
console.log(uuidv1());

输出结果:

9cae2569-010e-4a69-867c-65601234e2a5
0b2567c0-7a17-11ec-9b81-19257147bda6

我们还可以使用从 Node js 的 4.17.0 版添加的加密模块生成 UUID。

在 Node js 的早期版本中,除了使用诸如 UUID 包之类的外部包之外,没有办法在本地生成 UUID。

使用这个模块,我们可以使用 randomUUID options 方法生成多达 128 个 RFC4122 版本 4 UUIDs,只需在我们的程序顶部简单地要求 crypto 模块。

默认情况下,Node js 将缓存足够的数据以使用此方法生成多达 128 个版本 4 UUID。但是,我们也可以通过将禁用 EntropyCache 的对象设置为 true 来生成不缓存的 UUID。

const crypto = require('crypto');
console.log(crypto.randomUUID());

输出结果:

7a2e09e9-4059-438d-89cf-c2badb76ed3c

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Node.js 中编码 URL

发布时间:2023/03/27 浏览次数:201 分类:Node.js

在这篇简短的文章中,我们将学习如何在 Node.js 中进行 URL 编码。

在 Node.js 中编码 Base64

发布时间:2023/03/27 浏览次数:155 分类:Node.js

在本文中,我们将学习如何在 Node.js 中将字符串或文本转换为 base64。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便