@rusline

Как правильно отображать ошибку валидации при уникальном значение?

Немного не пойму в node js новичок. Как переопределить название ошибки и вообще правильно ли я вывожу валидацию?
Вот что выводит message
E11000 duplicate key error index: social_network.users.$username_1 dup key: { : "ЛОГИН" }
А хотя бы выводило что Такой пользователь уже существует, конечно примерно есть мысль как это сделать, в рендеринге message и там вывести данную ошибку, но думаю, что это не разумно использовать
Как я реализовал в моделе
let schema = new Schema({
    username: {
        type: String,
        index: {unique: true, message: 'Такой пользователь уже существует'},
        required: true
    },
    hashedPassword: {
        type: String,
        required: true
    },
    salt: {
        type: String,
        required: true
    },
    created: {
        type: Date,
        default: Date.now
    }
});
module.exports = mongoose.model('User', schema);

Во вьюшке
router.get('/registration', (req, res, next) => {
    res.render('registration', {
        title: 'Регитрация',
    })
});

router.post('/registration', (req, res) => {
    let user = {
        username: req.body.username,
        password: req.body.password
    };
    let data = new User(user);
    data.save().then((doc) => {
        console.log('Сохранение объекта', doc);
        res.redirect('/')
    }).catch((err) => {
        console.error(err);
        res.render('registration', {
            title: 'Регистрация',
            message: err.message,
        });
    })
});

И в шаблоне
extends layout

block content
    if(message)
        p=message
    .container
        h1=title
        form(method='post')
            div(class='input-field col s6')
                input#username(type='text', name='username' required=true, class='validate')
                label(for='username') Имя пользователя
            div(class='input-field col s6')
                input#password(type='password', name='password' required=true, class='validate')
                label(for='password') Пароль
            button(class='waves-effect waves-light btn') Зарегестрировать пользователя
        a(href='/') Войти в систему

Не пойму как это сделать
  • Вопрос задан
  • 244 просмотра
Решения вопроса 1
@levchak0910
answer.correct ? press({correct: true}) : next()
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы