ShortId проверка уникального значения из метода findOne - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь регенерировать, если случается так, что шортид находит совпадение из записей пользователей, может кто-нибудь подсказать мне об этом?

let userSchema = new Schema({
    agentId: {
        type: String,
        unique: true,
        'default': shortid.generate,
        ref: 'user'
    }
})

Что-то, с чем я столкнулся, - это предварительная функция для проверки по записи с использованием метода findOne / find

userSchema.pre('save', function(next) { 
    let ctx = this.agentId
    attempToGenerate(ctx, next)
})

function attempToGenerate(ctx, callback) {
    let newagentId = shortid.generate()
    User.findOne({
            'agentId': newagentId
    }),
    function(err, result) {
        if (!result) {
            ctx = newagentId
            next();

        } else {
            attempToGenerate(ctx, callback)
        }
    }
}
...