为什么用户未定义?
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;

从Mongo正确检索集合并记录到屏幕,但index.js中的用户未定义。
答案 0 :(得分:0)
在db.js中,您没有使用module.exports来导出用户。
您在index.js中的代码建议db.js使用getUsers函数导出一个对象,但它没有。
答案 1 :(得分: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()。
答案 2 :(得分: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;
});
});
});