Почему мой узел express возвращает ответ пустым? - PullRequest
0 голосов
/ 07 января 2020

Построение системы регистрации, когда в форме делаются ошибки, я получаю правильные ошибки.

Но когда пользователь с тем же адресом электронной почты пытается зарегистрироваться 'res. json ({error: 'электронная почта существует'}) ', она возвращает пустое {}.

Я использую почтальон для проверки ответов.

В чем проблема пустого ответа?

router.post("/register", (req, res) => {
   const { name, email, password, password2 } = req.body;
   let errors = {};

   if (!name) {
    errors.name = "Name is required";
   }

   ...
   if (errors) {
      return res.json(errors);
   } else {
    User.findOne({ email: email }).then(user => {
      if (user) {
        return res.json({ email: "email already exists" });
      } else {
        ...
       ...
      ...

Ответы [ 3 ]

5 голосов
/ 07 января 2020

Вы используете неправильный способ проверки пустого объекта,

if(errors) // This will evaluate to true always once the object is initialized

true, следовательно, в ответ возвращается пустой объект ошибки и он вообще не будет проверять электронную почту

Вы можно использовать

if ( Object.keys(errors).length != 0 ) {

, чтобы проверить, пуст ли объект ошибок

1 голос
/ 07 января 2020

На самом деле проблема в вашем условии if,

Вы проверяете объект, вы не можете напрямую ( if (ошибки) ) проверить объект, имеющий значение или нет. Это всегда go внутри этого условия. Если вы хотите работать правильно, вы должны проверить объект, содержащий любой ключ или нет.

Вы можете использовать это для проверки объекта ошибки в случае, если условие

if(Object.keys(errors).length > 0){
         res.json(errors);
}
0 голосов
/ 07 января 2020

Вероятно, if (errors) возвращает переменную ошибок, которая содержит {}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...