저는 nodejs를 처음 접했고 정확히 무슨 일이 일어나는지 알아낼 수 없습니다. 사용자가 값을 입력 할 때 기본 로그인 페이지가 있습니다. 홈 페이지로 이동하십시오. 그 전에 사용자 이름이 존재하는지 여부를 확인하기 위해 데이터베이스를 확인합니다. 문제는 내가 제출 버튼을 클릭하면 코드가 데이터베이스 기능에 도달하지 못하는 것입니다.
이는 app.js 내 모듈 -nodejs를 사용하여 데이터베이스에 연결할 수 없습니다.
app.post('/home',function(req,res){
//check for user existence....
var str;
console.log("in home");
user_login.perform_login(req.body.username,function(err,str){
if(!err){
console.log(str+" in login");
var cookie_val=req.body.username;
res.cookie('username',cookie_val,{signed: true});
req.session.username=cookie_val;
res.render('home.ejs',{
layout: false,
locals: {varname: cookie_val},
udata: req.session.username
});
}
else{
console.log("Couldn't find it.");
res.redirect("/login");
}
});
});
이 user_login.js-
var mongo_db=require("./testdb.js");
exports.perform_login=function (username,callback){
mongo_db.getInfo(username,function(err,bundle){
if(!err){
//console.log("success\n"+bundle);
callback(false,bundle);
}
else{
//console.log("couldn't find it");
callback(true,null);
}
});
}
에서 perform_login이며, 이는 testdb.js-
var mongoose=require('mongoose');
mongoose.connect('mongodb://localhost/test');
exports.getInfo=function(value,callback){
var db=mongoose.connection;
db.on('error',console.error.bind(console,'connection error:'));
db.once('open',function(){
console.log("Connected!");
var userSchema=mongoose.Schema({
username: String,
password: String
});
var userInstances=mongoose.model('userInstances',userSchema);
userInstances.findOne({username: value},'username password',function(err,ui){
if(!err){
callback(false,ui);
}
else{
callback(true,"error");
}
});//findone
});//db.once function
}//getinfo
에 터미널 i는 "집안에"서만 도착하는데, 그 후에는 아무 일도 일어나지 않습니다. 브라우저에서는 처리 중이지만 로그인 페이지에 남아 있습니다.
req.body.username 대신 실제 하드 코드 된 값으로 perform_login을 실행할 때 app.js가 실행되면 바로 적절한 결과를 얻습니다. 그래서 어떻게 든 app.post() 외부에서 데이터베이스에 액세스 할 수 있습니다.
콜백에 문제가 있습니까?
이 일 :
여기에 작동합니다 예입니다! 감사 – Kamehameha