처음으로 노드를 사용 중이며 특정 응답이 트리거 될 때 문제가 있습니다. 이 경우 username과 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>
기능은 모든 routes.js에 연결되어 module.exports = ...
, 밑줄 변수 이름을 제거,'route_callbck'은 일반적으로, Node.js를에서의 99 %를 말하기 ... cb''해야 하나 이상의 콜백이 직접 범위에 있지 않습니다. 각각에 동일한 변수 이름을 사용한다면, 예를 들어'cb'는 제 의견으로는 가장 좋은 방법입니다. –
또 다른 것은 에러 콜백을 사용해야한다. 그래서이'route_callbck ({password : pw}, null);은'cb (null, {password : pw})가되어야한다. ' –
고마워, 알렉산더! 문제가 해결되었습니다. Cb 제안에 대해서는 전체 파일에서 일관성있게 함수 이름을 변경해야한다고 말하고 있습니까? – curious4cs