繁体   English   中英

将数据返回给index.js节点

[英]returning data to index.js node 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中的用户未定义。

在db.js中,您没有使用module.exports导出用户。

您在index.js中的代码建议db.js导出具有getUsers函数的对象,但事实并非如此。

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

是调试的一部分,您真正想要返回的是用户集合。 重要的一点是将块作为getUsers()添加到module.exports中。

最后,我了解到它可以与此异步调用一起使用。 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;
    });

});

});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM