Я попробовал этот код для входа в мой API
user.post("/login", (req, res) => {
let email = req.body.email;
let password = req.body.password;
userModel
.findOne({ $and: [{ email: email }, { password: password }] })
.then((data) => {
res.status(200).json({
text: "User found",
data: data
});
})
.catch((err) => {
res.status(404).json({
text: "user not found",
error: err
});
});
});
когда я отправляю запрос API в почтальоне с несуществующими значениями (адрес электронной почты и пароль), он показывает ответ json ниже
{
"text": "User found",
"data": null
}
, что означает, что findOne не возвращает никакой ошибки.
затем я изменил свой код на
userModel.findOne(
{ $and: [{ email: email }, { password: password }] },
(err, data) => {
if (data) {
res.status(200).json({
text: "User found",
data: data
});
} else {
res.status(404).json({
text: "user not found",
error: err
});
}
}
);
теперь ответ json для несуществующих учетных данных:
{
"text": "user not found",
"error": null
}
Почему 'then block' работает в первом испытании, даже findOne не возвращает никаких данных?
что будет возвращать функция MongODB findOne, если данные не найдены?