0
我對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
在終端我只能得到 - 「在家裏」,之後什麼也沒有發生。在瀏覽器中,它似乎正在處理,但仍然在登錄頁面。
當我運行帶有實際硬編碼值而不是req.body.username的perform_login時,立即啓動app.js,我得到了正確的結果。所以我能夠在app.post()之外以某種方式訪問數據庫。
回調中是否有錯誤?
這個工作!謝謝 – Kamehameha 2013-02-23 19:47:16