Как получить доступ к другому значению свойства документа в функции проверки схемы? - PullRequest
0 голосов
/ 20 июня 2020

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

const userSchema = new mongoose.Schema({
    name:{
        type:String,
        required:true,
        trim:true,
        lowercase:true
    },
    email:{
        type:String,
        required:true,
        trim:true,
        lowercase:true,
        validate(value){
            if(!validator.isEmail(value))
            {
                throw new Error('Email not valid!')
            }
        }
    },
    password:{
        type:String,
        validate(value){
            if(value.length<6||value.length>16)
            {
                throw new Error('Password should be of lenght ranging 6 to 16 characters')
            }
            **if(validator.contains(value,*name*))
            {
                throw new Error('Password should not contain your Name in it')
            }**

        }
    },
    date:{
        type:Date,
        default:Date.now()
    }
})

const User = mongoose.model('users',userSchema)

1 Ответ

1 голос
/ 21 июня 2020

Вы можете получить доступ к своему документу, используя this. Таким образом, имя можно получить по this.name

...
        validate(value) {
            if (value.length < 6 || value.length > 16) {
                throw new Error('Password should be of length ranging 6 to 16 characters')
            }
            if (validator.contains(value, this.name)) {
                throw new Error('Password should not contain your Name in it')
            }

        }
...

...