将数据返回到索引.js节点表达式

returning data to index.js node express

本文关键字:js 节点 表达式 索引 数据 返回      更新时间:2023-09-26

为什么用户未定义?

分贝.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);
    });
});

索引.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 正确检索并记录到屏幕,但索引中的用户.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()。

我最终让它与这个异步调用一起工作。索引.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;
    });
});

});

在数据库中.js您没有使用 module.exports 来导出您的用户。

索引中的代码.js建议 db.js 导出带有 getUsers 函数的对象,但它没有。