#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() внутри неправильного блока кода. Вывод его за пределы блока решил все эти проблемы.