在 Node JS 中生成唯一 ID

Isaac Tony 2023年10月12日
在 Node JS 中生成唯一 ID

在 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 {v1 as uuidv1, v4 as uuidv4} 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
作者: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn