javascript - 如何仅在循环(其中包含函数)完成时运行语句?
问题描述
这是我的代码。
router.route("/login").post((req, res) => {
const email = req.body.email;
const password = req.body.password;
Account.find().then((account) => {
account.forEach((eachAcc) => {
if (eachAcc.email.toUpperCase() === email.toUpperCase()) {
bcrypt.compare(password, eachAcc.password, function (err, result) {
if (result == true) res.status(200).json("Login Successful");
else if (err) res.status(400).json("Error: " + err);
});
}
});
res.status(400).json("Invalid email or password");
});
});
但是我总是收到无效的电子邮件/密码,我希望仅在循环完成并且电子邮件/密码不匹配时才打印它。
请帮忙。
解决方案
试试这个
router.route("/login").post((req, res) => {
const { email, password } = req.body;
Account.find().then((account) => {
let acc = account.find(
(eachAcc) => eachAcc.email.toUpperCase() ===
email.toUpperCase()
);
if (acc) {
bcrypt.compare(password, acc.password, function (err, result)
{
if (err) res.status(400).json("Error: " + err);
else if (result) res.status(200).json("Login Successful");
else res.status(400).json("Invalid password");
});
} else res.status(400).json("Invalid email");
});
});
推荐阅读
- javascript - 视频反应组件显示错误
- pandas - pandas df 基于多个条件的查找值
- python-3.x - 使用 NaiveBayesClassifier 对文本进行分类
- ruby-on-rails - Capybara + Selenium + Firefox + Rails 无法自动保存文件
- merge - 如何让我的合并函数显示 PROLOG 中可能的列表组合
- javascript - 不同变量的单一数据类型
- javascript - 预期 `onClick` 侦听器是一个函数,而不是 `string` 类型的值
- unity3d - Unity3D GUI.Label 不显示
- java - java中的多部分文件上传检查mime类型
- node.js - 如何在express.js和nginx中获取公共文件夹的所有页面