nodejs中想生成uid gid,使用什么模块?
发布于 10 年前 作者 snowdream 24321 次浏览 最后一次编辑是 8 年前 来自 问答

如题?

14 回复

@skipify 看起来太长了,有其他的选择吗

我想问为什么要自己去生成呢,为什么不用数据库的自增呢,这是出于安全考虑吗

@snowdream 太长?不是很理解,你其实要的是随机的类md5,但是可以指定长度?

场景是什么?

@alsotang 作为用户id,组id

我现在用passport.js方案,想在用户表中插入uid,gid字段

有个叫 shortid 的模块, 特点是短

感谢以上答复,准备使用以下模块》 https://github.com/mariodu/mongoose-id-autoinc

  function guidGenerator() {
    var S4 = function() {
        return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    };
    return (S4() + S4() + S4() + S4() + S4() + S4() + S4() + S4());
}

https://github.com/vczero/OurTimes/blob/master/server/util/guid.js /**

  • guid模块提供生成唯一值ID,用于token生成等。如果加上objID或者用户唯一标识更好
  • @module guid */ module.exports = { create: function() { return ‘xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx’.replace(/[xy]/g, function© { var r = Math.random() * 16 | 0, v = c == ‘x’ ? r : (r & 0x3 | 0x8); return v.toString(16); }).toUpperCase(); } };
module.exports = {
  create: function() {
	  return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
		  var r = Math.random() * 16 | 0,
			  v = c == 'x' ? r : (r & 0x3 | 0x8);
		  return v.toString(16);
	  }).toUpperCase();
  }
  };

感谢.选择了递增整数来做uid。

Redis 键值对里想做确保唯一性,用UUID,还是用Redis里面用 incr 叠加生成个ID ?

回到顶部