如何在 Node.js 成功登录后重定向到另一个页面

4
当登录过程成功完成后,我希望将客户端发送到下一页,即确认页面。但是,我遇到了一些错误。 图片截图
router.post('/sign_in', urlend, function(req, res) {
  var email = req.body.user_id;
  var password = req.body.password;
  if (email != '' && password != '') {
    user_modell.findOne({
      email: email,
      password: password
    }, function(err, data) {
      if (err) {
        //res.status(500).send();
        console.log('error');
      } else if (!data) {
        console.log('Incorrect User ID or Password');
        return res.end();
      } else {
        res.render("confirm");
      }
    });
  }
  res.end();
});

返回 res.redirect('/HomePage')。 - Lalit
已在此回答 https://dev59.com/cloV5IYBdhLWcg3wTdMc - Lalit
先生,我已经完成了这个,请参考问题中附加的屏幕截图。我在使用res参数时遇到了未处理的错误事件。 - Sarus Crane
每次我使用res对象重定向任何内容时,为什么总是会出现这种类型的错误。 - Sarus Crane
1个回答

2

response.redirect('URL'); 用于将请求重定向到另一个页面。

代码

router.post('/sign_in',urlend,function(req,res){
    var email=req.body.user_id;
    var password=req.body.password;
    if(email!='' && password!=''){      
        user_modell.findOne({email:email,password:password},function(err,data){
            if(err){
                //res.status(500).send();
                console.log('error');
            } else if(!data){
                console.log('Incorrect User ID or Password');
                return res.end();
            }else{
                  res.redirect("/confirm"); 
            }
        });
    }
    res.end();
});

你也可以使用 express-redirect 包。
你的错误解释:
错误 [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 是因为你的代码试图发送两个响应。 model.findOne 就像超时一样。你传递一个回调函数,它稍后执行。这意味着 res.end() 设置了头并发送了一个响应。然后稍后,你的回调被调用,并且你尝试发送另一个响应。
想象一下电话交谈:有人给你打电话告诉你他们的电子邮件/密码,你说“等一下,我来检查一下”,然后挂断电话,拿起已知电子邮件/密码的笔记本。然后当你想出要回复什么时,你重新接起电话,但没有人在听,因为你在挂断电话时切断了他们的联系!

先生,我正在尝试使用您的代码,但仍然出现错误。请参考附在问题中的屏幕截图。我遇到了未处理的错误。 - Sarus Crane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接