API маршрутизатора TypeORM / Express отвечает 404 на POST-запрос

#node.js #typescript #express #typeorm

#node.js #машинописный текст #выражать #typeorm

Вопрос:

В настоящее время я застрял на ошибке, с которой я сталкиваюсь при попытке выполнить POST-запросы к локальной конечной точке тестирования.

Я использую Insomnia для отправки простого Resister запроса POST в формате JSON http://localhost:5000/api/auth/register со следующим:

 {
    "email":"test@email.com",
    "username":"test",
    "password":"test"
}
 

Однако я получаю 404 ответ, но просматриваю журналы и выполняю отладку запроса к моей базе данных?
Этот ответ, по-видимому, отправляется перед блоком trycatch. Затем сервер выходит из строя, потому что он не может отправить заголовок снова, если возникнут дополнительные ошибки.

блок кода для запроса приведен ниже:

авт.тс

 const register = async (
  req: Request,
  res: Response
): Promise<Response<any>> => {
  const { email, username, password } = req.body;

  try {
    // VALIDATE DATA

    let errors: any = {};

    const emailUser = await User.findOne({ email });
    const usernameUser = await User.findOne({ username });

    if (emailUser) errors.email = "sorry, email is already taken";
    if (usernameUser) errors.username = "sorry, username is already taken";

    if (Object.keys(errors).length > 0) {
      return res.status(400).json(errors);
    }

    // CREATE THE USER

    const user = new User({ email, username, password });

    errors = await validate(user);
    if (errors.length > 0) {
      return res.status(400).json(mapErrors(errors));
    }
    await user.save();

    // RETURN THE USER

    return res.json(user);
  } catch (err) {
    console.log(err);
    return res.status(500).json(err);
  }
};

...

const router = Router();
router.post("/register", register);
 

server.ts

 ...
import authRoutes from "./routes/auth";
...
app.use("/api/auth", authRoutes);
...
app.listen(PORT, async () => {
  console.log(`Server running at http://localhost:${PORT}`);

  try {
    await createConnection();
    console.log("Database Connected");
  } catch (error) {
    console.log(error);
  }
 

Буду признателен за любую помощь, и, пожалуйста, дайте мне знать, если вам понадобятся какие-либо другие блоки кода.

Ответ №1:

Неважно — я это исправил, у меня было промежуточное программное обеспечение для удаления пробелов из имени пользователя и электронной почты — я вызвал функцию next() внутри неправильного блока кода. Вывод его за пределы блока решил все эти проблемы.