請看看在dbfn.js文件返回null的mysql的NodeJS
/*database function file;*/
var db = require('./connection');
function check_conn(){
if(db){
console.log('We are connected to Database server'.bgGreen);
return true;
}else{
console.log('We are not connected to DataBase server'.bgRed);
return false;
}
}
module.exports = {
testCon : function(){
if(check_conn() === true){
return 'We are connected to DB';
}else return 'We are not connected to DB';
},
get_user : function(){
db.query('SELECT * FROM users',function(err,results,fields){
if(err){
console.log(err)
return err;
}
if(results){
console.log(results);
return results;
}
console.log('nothing...');
});
}
};
現在,看看routes.js文件
var db = require('./dbfn');
module.exports = function(app){
/*
Routing starts here
*/
//root route
app.get('/', function(req, res){
res.render('index.ejs');
});
//test route
app.get('/test',function(req,res){
var x = db.get_user();
console.log(x);
res.writeHead(200, {'Content-Type': 'text/json'});
res.json(x);
});
//default it should stay at bottom
app.get('*',function (req, res) {
//res.redirect('/');
res.send(404);
});
}
的console.log上dbfn文件中寫入從MySQL完整的對象數據庫,但是當我在routes.js文件中將其作爲var x調用它時,我實際上並不瞭解我實際上可以如何克服這一點。是的,我是NodeJs的新學生
謝謝。
'nodejs'是異步。因此您需要將某個回調傳遞給該方法或使用'promise'來獲取結果。 'var x = db.get_user();'在這段代碼中,db仍然會執行,在這種情況下你會得到'undefined' –