Это мой user.js файл, где я обрабатываю два запроса.
Сначала POST / signup , где пользователь вводит электронное письмо, ипароль, чтобы я мог сохранить его в mongodb.
var express = require("express");
const router = express.Router();
const mongoose = require("mongoose");
var bcrypt = require("bcrypt");
var jwt = require("jsonwebtoken");
var User = require("../models/user");
router.post("/signup", (req, res, next) => {
User.find({ email: req.body.email })
.exec()
.then(user => {
if (user.length >= 1) {
return res.status(409).json({
message: "Mail exists"
});
} else {
bcrypt.hash(req.body.password, 10, (err, hash) => {
if (err) {
return res.status(500).json({
error: err
});
} else {
const user = new User({
_id: new mongoose.Types.ObjectId(),
email: req.body.email,
password: hash
});
user
.save()
.then(result => {
console.log(result);
res.status(201).json({
message: "User created"
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
}
});
}
});
});
Второй POST / login , где пользователь вводит электронную почту, а пароль и с bcrypt я сравниваю, если пароль совпадаеттот, что в БД.
router.post("/login", (req, res, next) => {
User.find({ email: req.body.email })
.exec()
.then(user => {
if (user.length < 1) {
return res.status(401).json({
message: "Auth failed"
});
}
bcrypt.compare(req.body.password, user[0].password, (err, result) => {
if (err) {
return res.status(401).json({
message: "Auth failed"
});
}
if (result) {
const token = jwt.sign(
{
email: user[0].email,
userId: user[0]._id
},
process.env.JWT_KEY,
{
expiresIn: "1h"
}
);
return res.status(200).json({
message: "Auth successful",
token: token
});
}
res.status(401).json({
message: "Auth failed"
});
});
})
.catch(err => {
console.log(err);
res.status(500).json({
error: err
});
});
});
Проблема заключается в следующем: Всякий раз, когда я пытаюсь создать пользователя / signup с помощью почтальона, запрос остается в "loading"и сервер выключается.
POSTMAN тело: {'emial': 'teste@gmail.com', 'пароль': '12345'}
Ошибка на сервере: UnhandledPromiseRejectionWarning: MongoNetworkError: не удалось подключиться к серверу [node-rest-shop-shard-00-01-pbcph.azure.mongodb.net:27017] при первом подключении [MongoNetworkError: подключение 4 к node-rest-shop-shard-00-01-pbcph.azure.mongodb.net:27017 истекло время ожидания]
(узел: 1496) UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка возникла либо из-за того, что внутри асинхронной функции возникла ошибка без блока catch, либо из-за отклонения обещания, которое не было обработано с помощью .catch ().(идентификатор отклонения: 1)
(узел: 1496) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания не рекомендуется.В будущем отклонения обещаний, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом завершения.