Proxy to express - 500-timeout - Код сервера выполняется более одного раза - PullRequest
0 голосов
/ 11 ноября 2019

Я не знаю, что происходит. Когда я пытаюсь отправить запрос к бэкэнду для добавления подписчика (мой маршрут ниже), я получаю ошибку привязки сервера вместо sucess, но в моей базе данных подписчик добавляется правильно (и удаляется), но не всегда. Иногда он сохраняет в 3 раза один и тот же результат (подписчик в БД), а иногда не удаляет подписчика. И проблема в том, что я понятия не имею, что происходит.

В моей консоли иногда появляется эта ошибка, иногда я вижу следующее: [HPM] Произошла ошибка при попытке прокси-запроса / api / users / user / followот 127.0.0.1:8080 до http://[::1]:1648 (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

setFollower route:


const setFollowing = async (req, res, next) => {
   try {
      const userId = req.body.userId;
      const followId = req.body.followId;
      await User.findByIdAndUpdate(
         userId,
         {
            $push: {
               following: followId,
            },
         },
      );
      next();
   } catch (err) {
      res.status(400).json({
         error: err,
      });
   }
};

const setFollower = async (req: Request, res: Response) => {
   try {
      const followId = req.body.followId;
      const userId = req.body.userId;
      const result = await User.findByIdAndUpdate(
         followId,
         {
            $push: {
               followers: userId,
            },
         },
         { new: true },
      )
         .populate('following', '_id name')
         .populate('followers', '_id name')

      const followerResult = { ...result._doc };
      const { photo, salt, passwordHash, ...rest } = followerResult;

      return res.status({ ...rest });

   } catch (err) {
      res.status(400).json({
         error: err,
      });
   }
};


router.put(
   '/user/follow',
   isUserSignIn,
   setFollowing,
   setFollower,
);



отправка запроса по нажатию кнопки

   try {
         setLoading(true);
         const response = await fetch('/api/users/user/follow', {
            body: JSON.stringify({
               followId: params.userId,
               userId: loggedInUser._id,
            }),
            headers: {
               'Accept': 'application/json',
               'Authorization': `Bearer ${token}`,
               'Content-Type': 'application/json',
            },
            method: 'PUT',
         });
         const data = await response.json();


         setLoading(false);
         setFollowing(true);
      } catch (err) {
         if (err.message) {
            setServerError(err.message);
         } else {
            setServerError(JSON.stringify(err));
         }
      }

мой репо: https://github.com/bartek-fecko/fullstackapp

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