gpt4 book ai didi

javascript - 使用express查找单个mongodb文档

转载 作者:行者123 更新时间:2023-12-02 20:49:57 25 4
gpt4 key购买 nike

我是 MongoDB Express 新手。我想用用户名和密码验证用户。但即使我使用正确的凭据,我的代码也不会给出任何错误并执行“else 语句”。

这是 JS 文件:

    app.post('/auth', function(req, res){

var user = ( db.collection('auth').findOne({name: req.body.username}));
var pass = ( db.collection('auth').findOne({password: req.body.password}));

if(user == req.body.username && pass == req.body.password){
res.send("Credentials Match");
}else{
res.send("Wrong Credentials");
}
console.log(req.body);
})

这是 HTML 文件:

 <form class="form-signin" action="/auth" method="POST">
<h1 class="h3 mb-3 font-weight-normal">Please sign in</h1>
<label for="inputEmail" class="sr-only">Username</label>
<input type="text" placeholder="Username" name="username" required="">
<label for="inputPassword" class="sr-only">Password</label>
<input type="password" name="password" placeholder="password" required="">
<button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
</form>

最佳答案

这两行

var user = ( db.collection('auth').findOne({name: req.body.username}));
var pass = ( db.collection('auth').findOne({password: req.body.password}));

表示异步代码,因此 if else 检查不会等待它们执行

除非您命令 javascript 等待

您可以使用async/await强制代码等待,直到异步部分完成

此外,您将单独获取用户名,然后也单独获取密码

因此,如果用户输入他的名字,但输入另一个密码而不是正确的密码,并且该密码存在于数据库中,则将完成登录,但不应该这样做

您必须检查同一文档中的用户名和密码以避免出现这种情况

类似的事情

app.post('/auth', async function(req, res) { // note the async keyword here
try {
var user = await db.collection('auth').findOne({ name: req.body.username , password: req.body.password });

if (user && user.name == req.body.username && user.password == req.body.password) {
res.send("Credentials Match");
} else {
res.send("Wrong Credentials");
}
console.log(req.body);
}
catch (err) {
console.log('Exception >>\n', err); // log the error
res.send("Something wrong has happened while checking the credentials");
}
})

希望对你有帮助

关于javascript - 使用express查找单个mongodb文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61632928/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com