如何在nodejs中生成唯一的数字短ID?

时间:2019-01-24 03:03:15

标签: node.js database algorithm

如何在nodejs中生成唯一的数字短ID?

我需要给我的每笔交易这些数字短ID之一

可能有数百万笔交易

8 个答案:

答案 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(如果有)。

enter image description here

您可以从此处了解详细的文档-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。

  • 默认情况下,它将生成长度为6的唯一数字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/uuidhttps://www.npmjs.com/package/nanoid。我个人更喜欢第二个。

生成唯一数字是比大多数人认为的要复杂得多的主题。例如,在某些情况下使用时间戳可能“有效”,但会引起安全隐患。他们太容易猜到了。为了您自己,请跳到简单的“解决方案”之前,先看看我提到的两个库的自述文件。