如何在nodejs中生成唯一的数字短ID?
我需要给我的每笔交易这些数字短ID之一
可能有数百万笔交易
答案 0 :(得分:3)
我已经编写了一个名为custom-id的npm软件包来解决该问题。您可以根据需要定制您的自定义ID。如果您希望它是数字,则可以执行此操作。它也可以生成字母数字值。您担心其可读性。这就是编写插件的原因。它是为人和机器构建的。我们在随机生成的ID中使用熟悉的字母(来自给定名称和电子邮件)。人们可以随时随地使用它们,轻松地识别那些熟悉的字母。您可以使用uuid或nanoid随机生成ID,但不会为人类生成ID。这些是用于机器的。但是该库适用于他们两个人。
您可以从此处下载此软件包-custom-id
npm i custom-id
您可以通过提供一个空对象作为参数来立即生成ID。
var customId = require("custom-id");
customId({}); // Voila... A random 8 character string will be generated automatically
自定义ID将以这种格式生成-
✌✌** 2个数字+ 2个字母+ 2个数字+ 2个字母= 8个字符**✌✌
所有这些数字和字母将随机生成。我们使用密码术生成ID(如果有)。
您可以从此处了解详细的文档-NPM
但是,在您的情况下,您只需要一个数字,该数字是人类可读,直观且唯一的。代码将类似于-
var customId = require("custom-id")
customId({
name: "123456",
email: "78910"
});
// Random Result - "20111070" or "11435189" or "64656618"
您应该查看该号码。这只是一个数字,但很容易理解和记住。此随机ID生成器不会创建类似于-24359625的数字!由于其独特但非常简单的算法。这就是为什么我建议您使用它。
答案 1 :(得分:1)
您可以尝试使用此软件包:https://npmjs.com/package/nodejs-unique-numeric-id-generator 这是一个基于时间的数字ID生成器,因此将始终提供一个新ID。
var nodejsUniqueNumericIdGenerator = require("nodejs-unique-numeric-id-generator")
nodejsUniqueNumericIdGenerator.generate(new Date().toJSON());
答案 2 :(得分:1)
只需像安装this packagge一样
npm i nodejs-unique-numeric-id-generator
# yarn
yarn add nodejs-unique-numeric-id-generator
并将其添加到您的节点环境中
const ID = require("nodejs-unique-numeric-id-generator")
ID.generate(new Date().toJSON()); // output: "118626"
ID.generate(new Date().toJSON()); // output: "096984"
答案 3 :(得分:0)
最好与字母数字ID搭配使用。它们仍然可读,可以很短,并且通常可以确保您在多个表中具有唯一性。我的建议是shortid节点库。
https://www.npmjs.com/package/shortid
来自他们的文档:
ShortId创建令人惊讶的短非顺序url友好唯一 ID。非常适合网址缩短器,MongoDB和Redis id以及任何其他 用户可能会看到的ID。
默认使用7-14个网址友好字符:A-Z,a-z,0-9,_-支持 群集(自动),自定义种子,自定义字母。可以产生 任意数量的ID(无重复),甚至每天数百万。完善 对于游戏,尤其是如果您担心作弊,因此您不必 想要一个容易猜到的ID。可以多次重启应用 没有任何重复ID的机会。蒙哥的热门替代品 ID /猫鼬ID。可在Node,io.js和Web浏览器中使用。
答案 4 :(得分:0)
您可以使用shortid软件包。 安装软件包:
npm -i shortid
然后您可以在这样的代码中使用
var shortid = require("shortid");
id = shortid.generate();
答案 5 :(得分:0)
尝试以下功能-
function generate(n) {
var add = 1,
max = 12 - add;
if (n > max) {
return generate(max) + generate(n - max);
}
max = Math.pow(10, n + add);
var min = max / 10; // Math.pow(10, n) basically
var number = Math.floor(Math.random() * (max - min + 1)) + min;
return ("" + number).substring(add);
}
console.log(`id with 6 digits - ${generate(6)}`);
console.log(`id with 7 digits - ${generate(7)}`);
console.log(`id with 8 digits - ${generate(8)}`);
答案 6 :(得分:0)
new Date().valueOf()
将为您提供唯一的简单数字(除非您两次致电in the same millisecond)。
答案 7 :(得分:0)
您可以使用https://www.npmjs.com/package/uuid或https://www.npmjs.com/package/nanoid。我个人更喜欢第二个。
生成唯一数字是比大多数人认为的要复杂得多的主题。例如,在某些情况下使用时间戳可能“有效”,但会引起安全隐患。他们太容易猜到了。为了您自己,请跳到简单的“解决方案”之前,先看看我提到的两个库的自述文件。