难道nodejs中的return语句跟c里边的不一样吗?这样:我在一个js文件中写了个函数,用来返回数据库打开后的db对象,内容如下:
console.log("In file db.js") ;
var mongodb=require('mongodb')
, mongoserver=new mongodb.Server('localhost',27017)
,dbweibo=new mongodb.Db('weibo',mongoserver,{w:-1});
function openedDb(){
console.log("in openedDb function")
if(dbweibo.serverConfig.connected)
return dbweibo.db;
else{
dbweibo.open(function(err,db){
if(err)
return "open db failed";
else {// console.log(db);
return db; }
})
}
}
module.exports.openedDb=openedDb;
你能看到,在最后一个return语句之前有个log语句,这时显示的内容还是一个极其复杂的db对象。 然后我在routes文件中这样写
var db=openedDb();
console.log(db);
但是这回得到的db确实undefined,我就奇怪了,return之前还是正常的db对象,怎么return之后变成undefined了?难道nodejs的return语句与java和c的return语句不通?他不应该返回那个正常的db对象吗?
14 回复