请问大神们,cnodejs的话题topic后面的字符串 /topic/5133325adf9e9fcc58db31d2 是什么原理生成的,俺数了一下有24个字符 难道就不会生成重复的麼?
好像可以用加密模块crypto生成
你没有看过node入门么?这个貌似就是存储的文档的 id 啊
这个是16进制的字符串,一般由MD5、SHA等算法生成。实际上作为文章唯一标识URL没必要这么长。文章唯一标识在系统内部可用number类型表示,方便管理,对外输出时再转化为字符串。比如转化成由
'0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
62进制形成的字符串,这样一个5位字符串可以表示9亿(62的5次方)个文章标识。 这里有我写的转化函数:https://gist.github.com/zensh/4368330
这个是mongodb自动生成的_id值,我的项目jsGen中,没有使用mongodb自动生成的_id值,而是程序自增的number类型的_id
如果你仅需要唯一字符串,用MD5就好了:
var crypto = require('crypto');
function MD5(str, encoding) {
return crypto.createHash('md5').update(str).digest(encoding || 'hex');
};
// test
// console.log(MD5('123'));
忘了说,调用
MD5(Date.now());
如果觉得毫秒精度不够,把process.hrtime()的纳秒混进去
谢谢你的讲解
你说到文章ID用number类型,为什么输出还要转为字符串呢?不解
我给你一个UUID的生成模块吧 https://github.com/broofa/node-uuid
谢谢啦
@PoplarDddCN 不客气
adler32也可以生成