页面没有工作错误,节点js冻结

时间:2017-11-14 17:41:34

标签: javascript node.js express amazon-dynamodb mean-stack

我第一次使用Node,并且在触发某个响应时遇到问题。在这种情况下,我正在检查用户名和pw是否与DynamoDB中的匹配。当用户名和密码与我的数据库不匹配时,它会重定向到我的页面,但是当它完成时,我的所有console.log输出都会打印两次(这显然与Chrome中的favicon有关),如“在线”和“ [pw] + database.js,“但它也冻结了我的IDE和终端。然后我在浏览器中看到“页面无效,localhost没有发送任何数据”错误。忽略隐私问题:)思考?

database.js:

var myDB_lookup = function(username, password, route_callbck){
      console.log('Looking up: ' + username);   
      users.get(username, function (err, data) {
        if (err) {
          route_callbck(null, "Lookup error: "+err);
        } else if (data == null) {
          route_callbck(null, null);
        } else {
          // JSON object that stores password & fullname
          var value = JSON.parse(data[0].value);
          var pw = value.password;
          if (pw.valueOf() == password.valueOf()){
              route_callbck({ password : pw }, null);
              console.log(pw + "database.js");
          }else{
              //console.log('wrong password');
              route_callbck(null, null);
          }
        }
      });
};

routes.js:

var checkLogin = function(req,res){
    var user = req.body.username;
    var pw = req.body.password;
    console.log(user + pw + "routes");

    db.lookup(user, pw, function(data, err) {
          if (data!=null){
              console.log("online"); 
              //req.session.username = user;
              //req.session.password = pw;
          }else{
              res.render('main.ejs',{error:"Fields incorrect"});
          }
    });

};

main.ejs:

<form method="post" action="/checklogin">
    Enter username here: <br>
    <input type="text" name="username" placeholder = "Your username"> <br>
    Enter password here: <br>
    <input type="password" name="password" placeholder = "Your password">
    <input type="submit" value="Log In">
</form>

当我执行module.exports = ...

时,这些函数都在routes.js中链接起来

1 个答案:

答案 0 :(得分:0)

您可能忘记发送回复,请确保

res.render()res.json()res.send()被点击

你应该试一下JSON.parse(),这是最好的做法。

看起来你的罪魁祸首就在这里:

         if (data!=null){
              console.log("online"); 
              //req.session.username = user;
              //req.session.password = pw;

              // you need to send the response here too!  <<<<<
             res.render('main.ejs'); //// !!!
          }else{
              res.render('main.ejs',{error:"Fields incorrect"});
          }