nodejs:如何生成schema.pre(' save',...)唯一字段

时间:2014-07-26 20:06:20

标签: node.js mongoose unique

我在mongoose上进行了用户注册,我需要从可能的值生成唯一的随机ident字段。问题是我无法查询到mongodb。

控制台中脚本的结果是" ONE"。就是这样。 那么,哪里出错?是否有更好的方法来生成唯一的随机字段/数字?

schemaUser.pre('save', function (next) {

    var self = this;

    function genIdent() {
        var ident = "", possible = "013456789";

        for(var i=1; i <= 5; i++)
            ident += possible.charAt(Math.floor(Math.random() * possible.length));

        return ident;
    }

    function doIt() {
        var ident = genIdent();

        console.log('ONE');

        mongoose.model('User', schemaUser).findOne({ident: ident}, function(err, o) {
            console.log('TWO');
            if (o) {
                doIt();
            } else {
                self.ident = ident;
                next();
            }
        });

    }

    doIt();

});

1 个答案:

答案 0 :(得分:0)

看起来你只是在生成ident,但是没有把它放到你的MongoDB中,并且在你将它保存在那里之前试图找到它...

能够访问具有该身份的文档,您需要先将其保存。

尝试使用console.log(错误)来查看返回的错误