我正在写一个网站,我想为每一篇文章生成一个随机链接。
我希望链接是唯一的。但我也要确保我可以有10万篇独特的链接文章。(我正在使用MongoDB-Mongoose)。
示例链接:qw463253qqrasd。
符号的最大数量:15。
var PostSchema = new Schema({
title: String,
url: {type: String, unique: true, default: (() => {
let gen = "", possible = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm0123456789";
range(100).forEach((value, index) => gen += possible.charAt(Math.floor(Math.random() * possible.length)));
return gen;
})()},
...
});
备注:我有一个生成数字数组的函数。
最佳答案
查看mongoose-shortid模块。
var ShortId = require('mongoose-shortid');
var PostSchema = new Schema({
title: String,
url: {
type : ShortId,
len : 15,
base : 62,
alphabet: '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',
retries : 4, // Four retries on collision
index : true
},
});
不过,关于此模块的一些警告:
它没有很积极地维护;
它目前拒绝使用
mongoose
版本4.x或更高版本;它生成的id往往以1、2或3个零开头。
也许还有其他类似的模块。