返回数据到index.js节点快递
问题描述:
为什么用户未定义?返回数据到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给出了未定义的。
答
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()。
答
在db.js中,您没有使用module.exports来导出用户。
你在index.js中的代码建议db.js使用getUsers函数导出一个对象,但它没有。
答
我在最后使用了这个异步调用。 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;
});
});
});
我同意,这是更多我想要的,但我也尝试过类似的,但我仍然得到undefined返回到浏览器。 db.collection包含数据。难道这是我从index.js调用函数的方式吗? – siwix