将数据返回到index.js节点express

时间:2016-02-20 01:38:51

标签: javascript node.js mongodb express

为什么用户未定义?

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中的用户未定义。

3 个答案:

答案 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;
    });

});

});