Регистрация / валидатор пользователей NodeJS

Я создаю аутентификацию NodeJS / Express и пытаюсь выполнить async / await (попробовать / поймать), мой регистрационный маршрут работает идеально, прежде чем я добавлю свою проверку. Проблема в том, что мой валидатор (на основе валидатора) работает, отправляет ошибки, как и ожидалось, но когда у меня есть правильные данные для регистрации пользователя. Почтальон возвращает мне пустой предмет. ошибок нет. Я предполагаю, что этот try / catch работает иначе, чем .then (), который я использовал раньше.

С уважением

auth.js зарегистрировать маршрут

const db = require('../models')
const validateRegisterInput = require('../validation/register')


exports.register = async (req, res, next) => {
    const {
        errors,
        isValid
    } = validateRegisterInput(req.body)

    if (!isValid) {
        return res.status(400).json(errors)
    }
    try {
        const user = await db.User.create(req.body)
        const {
            id,
            username
        } = user
        res.json({
            id,
            username
        })
    } catch (error) {
        return next(error)
    }
}

проверка регистрации

const validator = require('validator')
const isEmpty = require('./is-empty')

const validateRegisterInput = (data) => {
    let errors = {}

    data.username = !isEmpty(data.username) ? data.username : ''
    data.password = !isEmpty(data.password) ? data.password : ''

    if (!validator.isLength(data.username, {
            min: 2,
            max: 30
        })) {
        errors.username = 'Username should be between 2 and 30 characters'
    }
    if (validator.isEmpty(data.username)) {
        errors.username = 'Username is required'
    }
    if (validator.isEmpty(data.password)) {
        errors.password = 'Password is required'
    }
    if (!validator.isLength(data.password, {
            min: 6,
            max: 30
        })) {
        errors.password = 'Password should be at least 6 characters'
    }
    return {
        errors,
        isValid: isEmpty(errors)
    }
}

module.exports = validateRegisterInput

пустой

const isEmpty = (value) => {
    value === undefined ||
        value === null ||
        (typeof value === 'object' && Object.keys(value).length === 0) ||
        (typeof value === 'string' && value.trim().length === 0)
}

module.exports = isEmpty

Не могли бы вы показать свою функцию isEmpty?

Joe 18.10.2018 15:17

добавлено пусто, я добавил это, потому что валидатор принимает только строки

Exc 18.10.2018 15:25

@JonasWilms Я не уверен, что это функция стрелки; если вы не вернетесь из какой-либо функции, у вас будет такая же проблема.

Paul 18.10.2018 16:06

@paul мне кажется, что OP думал, что функция стрелки неявно оценивает выражение ...

Jonas Wilms 18.10.2018 16:18

Возможно, @JonasWilms, но, как я уже сказал, это также может быть просто ошибка, не имеющая ничего общего со стрелочными функциями

Paul 18.10.2018 17:06
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
894
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В isEmpty отсутствует возврат, поэтому всегда возвращается undefined, который будет иметь значение false. Или - вместо добавления return вы, конечно, можете удалить фигурные скобки {...}

Другие вопросы по теме