Почему моя схема mongoose не проверяется?

#validation #vue.js #mongoose

#проверка #vue.js #mongoose

Вопрос:

Я пытаюсь проверить свои данные с помощью схемы mongoose. Но это не работает, и я понятия не имею, почему.

Это моя схема

 var mongoose = require("mongoose");

var UserSchema = new mongoose.Schema({
  username: { type: String, min: 3, max: 30, required: true },
  password: { type: String, min: 6, required: true }
});

mongoose.model("User", UserSchema);
  

Здесь я вызываю сообщение

 router.post('/signup', (req, res) => {
    const user = new User({
        username: "Marcel",
        password: "12345"
    })
    user.save().then(function(){
        res.json({
            message: '✅'
        })
    }).catch(function(){
        res.json({
            message: '❌'
        })
    })
})
  

Я ввел пароль минимум из 6 символов, но с примером пользователя я ввожу 5 символов, поэтому он не должен работать, но это работает. Кто-нибудь может мне помочь?

Ответ №1:

Вы использовали валидаторы min и max, которые относятся к типу Number.

Попробуйте вместо этого использовать minlength и maxlength, которые относятся к типу String:

 var UserSchema = new mongoose.Schema({
  username: { type: String, minlength: 3, maxlength: 30, required: true },
  password: { type: String, minlength: 6, required: true }
});
  

Я надеюсь, что это поможет.

Комментарии:

1. Я чувствую себя таким глупым, потому что я думал, что это правильно, я смотрел на разные места, где могла быть ошибка. Спасибо

2. У меня есть еще одно сомнение, это не проверяемый тип, когда мы передаем числовой тип в строку, он не проверяет. Вместо того, чтобы выдавать ошибку, она принимает ее. (т. Е. { имя пользователя: «Marcel», пароль: 1234567 } ). почему это не сбой? здесь я присвоил тип number паролю, который на самом деле является строковым типом.