我正在写一个网站,我想为每一篇文章生成一个随机链接。
我希望链接是唯一的。但我也要确保我可以有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个零开头。
也许还有其他类似的模块。

07-26 09:36