【发布时间】:2015-09-12 13:11:02
【问题描述】:
我正在编写一个 Node API,并获得了一个模型,我必须为其生成一个15 位随机数。这必须是唯一的并且不应该看起来微不足道(我无法获得自动增量)。
我真的不想生成一个数字并针对 Mongo 数据库进行查询以进行存在性检查。我必须以这种方式基于 Promise 生成某种 while 循环。
我想过简单地使用new Date().epoch,但是,这会是独一无二的吗?我能得到一份副本吗?
然后我还想附加类似的东西:
function privateKey (howMany, chars) {
chars = chars
|| "0123456789";
var rnd = crypto.randomBytes(howMany)
, value = new Array(howMany)
, len = chars.length;
for (var i = 0; i < howMany; i++) {
value[i] = chars[rnd[i] % len]
};
return parseInt(value.join(''));
}
包括避免重复。我应该如何实现这个?
编辑,这应该是一个数字。
我知道有 uuid 和 Mongo ObjectId,但它们不仅仅是数字。
【问题讨论】:
-
epoch 是自 1970 年 1 月 1 日以来的毫秒数,因此如果您在同一毫秒内调用它两次,您将得到重复。除了那种情况,你不会得到重复。另请参阅 stackoverflow.com/questions/105034/… 以生成 UUID。
-
为什么不能自增?
标签: javascript node.js mongodb token