2016-02-20 115 views
1

爲什麼用戶未定義?返回數據到index.js節點快遞

db.js:

var MongoClient = require('mongodb').MongoClient 
 
var users; 
 

 
MongoClient.connect('mongodb://127.0.0.1:27017/ExpressApp2', function(err, db) { 
 

 
    users = db.collection('usercollection'); 
 
    users.find().each(function(err, doc) { 
 
     console.log(doc); 
 
    }); 
 
});

index.js

var express = require('express'); 
 
var router = express.Router(); 
 

 

 
/* GET Userlist page. */ 
 
router.get('/userlist', function(req, res) { 
 
    var users = require('../db').getUsers(); 
 
    if (users==undefined) 
 
     res.send('undefined'); 
 
    else 
 
     res.send('found something'); 
 
}); 
 
    
 

 

 

 

 
module.exports = router;

集合被正確地從蒙戈檢索並記錄到屏幕上,但在用戶索引.js給出了未定義的。

回答

0
MongoClient.connect('mongodb://127.0.0.1:27017/ExpressApp2', function(err, db)  { 
    users = db.collection('usercollection'); 
    users.find().each(function(err, doc) { 
     console.log(doc); 
    }); 
}); 

應該

module.exports.getUsers = function() { 
    MongoClient.connect('mongodb://127.0.0.1:27017/ExpressApp2', function(err, db)  { 
     return db.collection('usercollection'); 
    }); 
} 

我假定

users.find().each(function(err, doc) { 
    console.log(doc); 
}); 

是你調試的一部分,你真的想回到什麼是用戶的集合。重要的一點是將塊添加到module.exports中作爲getUsers()。

+0

我同意,這是更多我想要的,但我也嘗試過類似的,但我仍然得到undefined返回到瀏覽器。 db.collection包含數據。難道這是我從index.js調用函數的方式嗎? – siwix

0

在db.js中,您沒有使用module.exports來導出用戶。

你在index.js中的代碼建議db.js使用getUsers函數導出一個對象,但它沒有。

0

我在最後使用了這個異步調用。 index.js

router.get('/userlist', function(req, res) { 
var d = require('../db'); 
d.getUsers('input', function(users) { 
    users.each(function(err, doc) { 
     res.send(doc); 
     return false; 
    }); 

}); 

});