nodejs生成唯一uuid
一、安装依赖
npm install uuid
二、脚本引入
(一)ES6 module syntax
import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'
(二)CommonJS
const { v4: uuidv4 } = require('uuid');
uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
var uuid = require('uuid'); // 唯一uuid
uuid.v4().replace(/\-/g, '')
三、Command Line
UUIDs can be generated from the command line using uuid
.
$ uuid
ddeb27fb-d9a0-4624-be4d-4615062daed4
The default is to generate version 4 UUIDS, however the other versions are supported. Type uuid --help for details:$ uuid --helpUsage:uuiduuid v1uuid v3 <name> <namespace uuid>uuid v4uuid v5 <name> <namespace uuid>uuid --helpNote: <namespace uuid> may be "URL" or "DNS" to use the corresponding UUIDs
defined by RFC4122
四、API
API Summary
函数方法 | 功能 | 备注 |
---|---|---|
uuid.NIL | The nil UUID string (all zeros) |
New in uuid@8.3
|
uuid.parse() | Convert UUID string to array of bytes |
New in uuid@8.3
|
uuid.stringify() | Convert array of bytes to UUID string |
New in uuid@8.3
|
uuid.v1() | Create a version 1 (timestamp) UUID | |
uuid.v3() | Create a version 3 (namespace w/ MD5) UUID | |
uuid.v4() | Create a version 4 (random) UUID | |
uuid.v5() | Create a version 5 (namespace w/ SHA-1) UUID | |
uuid.validate() | Test a string to see if it is a valid UUID |
New in uuid@8.3
|
uuid.version() | Detect RFC version of a UUID |
New in uuid@8.3
|
- uuid.NIL
nil UUID字符串(全零)。
示例:
import { NIL as NIL_UUID } from 'uuid';NIL_UUID; // ⇨ '00000000-0000-0000-0000-000000000000'
- uuid.parse(str)
将UUID字符串转换为字节数组
字段 | 说明 |
---|---|
str | A valid UUID String |
returns | Uint8Array[16] |
throws | TypeError if str is not a valid UUID |
注意:parse()和stringify()使用的字节数组中的值的顺序遵循UUID字符串中十六进制对的从左往右的顺序。 如下例所示。
示例:
import { parse as uuidParse } from 'uuid';// Parse a UUID
const bytes = uuidParse('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b');// Convert to hex strings to show byte order (for documentation purposes)
[...bytes].map((v) => v.toString(16).padStart(2, '0')); // ⇨ // [// '6e', 'c0', 'bd', '7f',// '11', 'c0', '43', 'da',// '97', '5e', '2a', '8a',// 'd9', 'eb', 'ae', '0b'// ]
其他更多关于uuid
库的方法的使用,具体参考npm官网:https://www.npmjs.com/package/uuid
生成uuid字符串后将其中的-去掉
当使用nodejs中的uuid库生成了1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed
这种格式的uuid字符串后,有时候我们需要把中间的-
字符去掉,这时候可以使用string
的replace
方法:
const { v4: uuidv4 } = require('uuid');
let strUUID = uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
let strUUID2 = strUUID.replace(/-/g, ''); // 去掉-字符,使用空格代替
uuid.stringify(arr[, offset])
Convert array of bytes to UUID string
arr
|
Array -like collection of 16 values (starting from offset ) between 0-255.
|
[offset = 0]
|
Number Starting index in the Array
|
returns |
String
|
throws |
TypeError if a valid UUID string cannot be generated
|
Note: Ordering of values in the byte arrays used by parse()
and stringify()
follows the left ↠ right order of hex-pairs in UUID strings. As shown in the example below.
Example:
import { stringify as uuidStringify } from 'uuid';const uuidBytes = [0x6e,0xc0,0xbd,0x7f,0x11,0xc0,0x43,0xda,0x97,0x5e,0x2a,0x8a,0xd9,0xeb,0xae,0x0b,
];uuidStringify(uuidBytes); // ⇨ '6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'
uuid.v1([options[, buffer[, offset]]])
Create an RFC version 1 (timestamp) UUID
[options ]
|
Object with one or more of the following properties:
|
[options.node ]
|
RFC "node" field as an Array[6] of byte values (per 4.1.6)
|
[options.clockseq ]
|
RFC "clock sequence" as a Number between 0 - 0x3fff
|
[options.msecs ]
|
RFC "timestamp" field (Number of milliseconds, unix epoch)
|
[options.nsecs ]
|
RFC "timestamp" field (Number of nanseconds to add to msecs , should be 0-10,000)
|
[options.random ]
|
Array of 16 random bytes (0-255)
|
[options.rng ]
|
Alternative to options.random , a Function that returns an Array of 16 random bytes (0-255)
|
[buffer ]
|
Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
|
[offset = 0]
|
Number Index to start writing UUID bytes in buffer
|
returns |
UUID String if no buffer is specified, otherwise returns buffer
|
throws |
Error if more than 10M UUIDs/sec are requested
|
Note: The default node id (the last 12 digits in the UUID) is generated once, randomly, on process startup, and then remains unchanged for the duration of the process.
Note: options.random
and options.rng
are only meaningful on the very first call to v1()
, where they may be passed to initialize the internal node
and clockseq
fields.
Example:
import { v1 as uuidv1 } from 'uuid';uuidv1(); // ⇨ '2c5ea4c0-4067-11e9-8bad-9b1deb4d3b7d'
Example using options
:
import { v1 as uuidv1 } from 'uuid';const v1options = {node: [0x01, 0x23, 0x45, 0x67, 0x89, 0xab],clockseq: 0x1234,msecs: new Date('2011-11-01').getTime(),nsecs: 5678,
};
uuidv1(v1options); // ⇨ '710b962e-041c-11e1-9234-0123456789ab'
uuid.v3(name, namespace[, buffer[, offset]])
Create an RFC version 3 (namespace w/ MD5) UUID
API is identical to v5()
, but uses "v3" instead.
备注: Per the RFC, "If backward compatibility is not an issue, SHA-1 [Version 5] is preferred."
uuid.v4([options[, buffer[, offset]]])
Create an RFC version 4 (random) UUID
[options ]
|
Object with one or more of the following properties:
|
[options.random ]
|
Array of 16 random bytes (0-255)
|
[options.rng ]
|
Alternative to options.random , a Function that returns an Array of 16 random bytes (0-255)
|
[buffer ]
|
Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
|
[offset = 0]
|
Number Index to start writing UUID bytes in buffer
|
returns |
UUID String if no buffer is specified, otherwise returns buffer
|
Example:
import { v4 as uuidv4 } from 'uuid';uuidv4(); // ⇨ '1b9d6bcd-bbfd-4b2d-9b5d-ab8dfbbd4bed'
Example using predefined random
values:
import { v4 as uuidv4 } from 'uuid';const v4options = {random: [0x10,0x91,0x56,0xbe,0xc4,0xfb,0xc1,0xea,0x71,0xb4,0xef,0xe1,0x67,0x1c,0x58,0x36,],
};
uuidv4(v4options); // ⇨ '109156be-c4fb-41ea-b1b4-efe1671c5836'
uuid.v5(name, namespace[, buffer[, offset]])
Create an RFC version 5 (namespace w/ SHA-1) UUID
name
|
String | Array
|
namespace
|
String | Array[16] Namespace UUID
|
[buffer ]
|
Array | Buffer If specified, uuid will be written here in byte-form, starting at offset
|
[offset = 0]
|
Number Index to start writing UUID bytes in buffer
|
returns |
UUID String if no buffer is specified, otherwise returns buffer
|
Note: The RFC DNS
and URL
namespaces are available as v5.DNS
and v5.URL
.
Example with custom namespace:
import { v5 as uuidv5 } from 'uuid';// Define a custom namespace. Readers, create your own using something like
// https://www.uuidgenerator.net/
const MY_NAMESPACE = '1b671a64-40d5-491e-99b0-da01ff1f3341';uuidv5('Hello, World!', MY_NAMESPACE); // ⇨ '630eb68f-e0fa-5ecc-887a-7c7a62614681'
Example with RFC URL
namespace:
import { v5 as uuidv5 } from 'uuid';uuidv5('https://www.w3.org/', uuidv5.URL); // ⇨ 'c106a26a-21bb-5538-8bf2-57095d1976c1'
uuid.validate(str)
Test a string to see if it is a valid UUID
str
|
String to validate
|
returns |
true if string is a valid UUID, false otherwise
|
Example:
import { validate as uuidValidate } from 'uuid';uuidValidate('not a UUID'); // ⇨ false
uuidValidate('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ true
Using validate and version together it is possible to do per-version validation, e.g. validate for only v4 UUIds.import { version as uuidVersion } from 'uuid';
import { validate as uuidValidate } from 'uuid';function uuidValidateV4(uuid) {return uuidValidate(uuid) && uuidVersion(uuid) === 4;
}const v1Uuid = 'd9428888-122b-11e1-b85c-61cd3cbb3210';
const v4Uuid = '109156be-c4fb-41ea-b1b4-efe1671c5836';uuidValidateV4(v4Uuid); // ⇨ true
uuidValidateV4(v1Uuid); // ⇨ false
uuid.version(str)
Detect RFC version of a UUID
str
|
A valid UUID String
|
returns |
Number The RFC version of the UUID
|
throws |
TypeError if str is not a valid UUID
|
Example:
import { version as uuidVersion } from 'uuid';uuidVersion('45637ec4-c85f-11ea-87d0-0242ac130003'); // ⇨ 1
uuidVersion('6ec0bd7f-11c0-43da-975e-2a8ad9ebae0b'); // ⇨ 4
nodejs生成唯一uuid相关推荐
- js 生成唯一uuid
全局唯一标识符(GUID,Globally Unique Identifier)也称作UUID(Universally Unique IDentifier) .GUID是一种由算法生成的二进制长度为1 ...
- nodejs生成UID(唯一标识符)——node-uuid模块
nodejs生成UID(唯一标识符)--node-uuid模块 unique identifier 惟一标识符 -->> uid 在项目开发中我们常需要给某些数据定义一个唯一 ...
- UUID.randomUUID()生成唯一识别码
目录 1.UUID 的概念 2.UUID的组成 3.UUID.randomUUID()使用 1.UUID 的概念 UUID(Universally Unique Identifier):通用唯一识别码 ...
- python 使用UUID库生成唯一ID
首先导包: import uuid uuid1(): # make a UUID based on the host ID and current time # 基于MAC地址,时间戳, ...
- Java中使用UUID工具类生成唯一标志防止重复
场景 UUID 是指Universally Unique Identifier,翻译为中文是通用唯一识别码,UUID 的目的是让分布式系统中的所有元素都能有唯一的识别信息. 在某些场景下需要给数据库中 ...
- python namespace unique_Python使用uuid库生成唯一标识ID
uuid是128位的全局唯一标识符(univeral unique identifier),通常用32位的一个字符串的形式来表现.有时也称guid(global unique identifier). ...
- uuid java 重复_Java中使用UUID工具类生成唯一标志防止重复
import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.secur ...
- java uuid 随机生成唯一序列号
UUID(Universally Unique Identifier)全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.按照开放软件基金会(OSF)制定的标准计算, ...
- 10.算法进阶之分布式篇——分布式环境下如何生成唯一ID——UUID
UUID--全局唯一ID--universally unique identifie. 一般来说常用的基于时间进行排序,因为时间是自然递增的.但是全局唯一ID的两个核心要求是: 全局唯一 粗略有序 在 ...
最新文章
- 微软云服务再添新产品,这次来自两位华裔女科学家创办的AI公司
- 知识图谱之语言计算与信息抽取
- javamail 解码 base64 html格式邮件_python使用QQ邮箱实现自动发送邮件
- 五个角度,来梳理下产品经理的分类和职业发展方向
- Linux netstat命令详解和使用例子(显示各种网络相关信息)
- java合并两个数组_「JAVA」两个数组的交集—力扣每日一题(一)
- tf.contrib.rnn.static_rnn与tf.nn.dynamic_rnn区别
- 让你的模型acc更上一层楼:模型trick和数据方法总结
- php 实现顺序查找
- java 连接hadoop集群_hadoop集群访问——Hadoop客户端访问、Java API访问
- 什么是视图?作用是什么?
- echart折线图删除_echart清空折线图数据
- 图数据库|如何从零到一构建一个企业股权图谱系统
- mysql:设有一数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)。四个表的结构分别如表1-1的表(一)表(四)所示
- 搜狗的2019年:录音笔开辟智能硬件新战场,语言AI要在C端找准点
- 中望3D 2021 自动缩放基准面大小
- 优秀的免费高清图片素材网站推荐
- Windows与网络基础:Windows基本命令-目录文件操作
- 计算机英语这门课上后感1000,英语教师听课心得体会作文
- java求多项式回归_通过LINEST进行多项式回归(Polynomial Regression via LINEST)
热门文章
- 测试开发常问面试题整理-----网络篇
- 通过命令运行jar包(指定外部依赖jar包)
- C语言实现逆波兰表达式计算函数(含浮点型、整型混合运算)
- 【小迪实地】Webdav安全配置相关与漏洞利用
- 记录:Java序列化
- jQuery之.each( function(index, Element) )
- 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记
- linux 图形界面无法弹出,xmanager无法弹出图形化界面。
- 百度Java面试题前200页和答案
- 【vue3源码】十四、认识vnode中的shapeFlag和patchFlag属性