【发布时间】:2023-01-08 01:25:01
【问题描述】:
我尝试使用 document.findOne() 获取文档,但它的值显示为 undefined 。
这是我的代码
`app.post("/studentlogin",(req,res)=>
{
let password;
console.log("login page");
bcrypt.hash(req.body.password,saltRounds,(err,hash)=>
{
const user= Student.findOne({srno:req.body.srno});
console.log(user.srno);
if(req.body.srno==user.srno && hash==user.password)
{
session=req.username;
session.userid=req.body.srno;
res.redirect("/");
}
else{
console.log("invalid user");
res.redirect("/studentlogin");
}
});
})`
我正在使用快速会话实现会话身份验证。在这里,当我登录用户时,它显示了模式和一堆我不知道的其他东西(错误太长)。 user.srno 也显示为未定义。我该如何解决?
我尝试使用回调函数,它正确地给了我所需的文件。但我希望查询返回正确的文档并将其存储在用户中。 使用回调函数 `app.post("/studentlogin",(req,res)=> {
let password;
console.log("login page");
bcrypt.hash(req.body.password,saltRounds,(err,hash)=>
{
Student.findOne({srno:req.body.srno},(err,result)=>
{
console.log(result);
});
//console.log(user.srno);
if(req.body.srno==user.srno && hash==user.password)
{
session=req.username;
session.userid=req.body.srno;
res.redirect("/");
}
else{
console.log("invalid user");
res.redirect("/studentlogin");
}
});
})`
【问题讨论】:
-
使用等待。 findOne 返回承诺。这是一个异步调用。第二个代码 sn-p 是正确的。
标签: node.js mongodb express mongoose session