Я делаю сервер Express, и я настроил его на прием почтовых запросов в "/ login". Сервер сопоставит имя пользователя и пароль с учетной записью пользователя на отдельном сервере mongodb. По какой-то причине я получаю ошибки, когда я пытаюсь войти как существующий пользователь, так и пользователь, который не существует. Я думаю, что это как-то связано с закрытием соединения mongodb перед пост-соединением, но я не могу понять, что мне делать. Я довольно новичок во всем этом, поэтому любая информация будет высоко ценится. Ниже мой код для почтового запроса.
app.post("/login", (req, res) => {
var user;
console.log(req.ip, "is attempting login...");
console.log("Email:", req.body.email);
console.log("Password:", req.body.password);
client.connect(function(mongoConnectionError, client) {
if (mongoConnectionError) {
console.log("Error", mongoConnectionError);
res.status(500);
client.close();
} else {
console.log("Connected correctly to mongodb server");
const db = client.db(dbName);
const col = db.collection("users");
col.find({ email: req.body.email }).toArray(function(err, docs) {
if (err) {
console.log("Error", err);
} else {
console.log("Docs", docs);
user = docs[0];
}
if (user && user.email === req.body.email) {
console.log(
"User",
user.email,
"found. Attempting authentication of password"
);
if (req.body.password === user.password) {
console.log(
"Password Authenticated. User",
user.email,
"signed in."
);
client.close();
res.status(200).end("Successfully signed in");
} else {
console.log(
"Unauthorized: User",
user.email,
"has entered the wrong password"
);
client.close();
res.status(401);
}
} else {
console.log("User does not exist");
client.close();
res.status(401).end("User does not exist");
}
});
}
});
});