nodejs require返回空对象

时间:2015-09-18 16:32:16

标签: javascript node.js

我试图为node.js编写自己的模块,但是当我需要它时,它是空的,我定义的方法是未定义的。

// module
var User = require('../models/user');

var UMa = function() {};

UMa.prototype.getUsers = function() {
    User.find({}, function(err, users) {
        return users;
    });
};

module.exports = new UMa();

第一个控制台输出是{},第二个是未定义的

/*
 * Router for /
 */
var express = require('express');
var userManagement = require('../modules/user-management');
var User = require('../models/user');

var router = express.Router();

router.get('/users', function(req, res) {
    console.dir(userManagement);
    console.log(userManagement.getUsers());
    res.render('users', {users: userManagement.getUsers() });
});

1 个答案:

答案 0 :(得分:1)

我在这里看不出任何错误。

您的getUsers功能未显示在您的第一个console.log中,因为它已在您userManagement的原型上设置。

第二个console.log返回undefined,因为您未在getUsers函数中返回任何内容。

您必须通过回调才能异步获取结果。

// module
UMa.prototype.getUsers = function(cb) {
    User.find(cb);
};

// router
userManagement.getUsers(function (err, users) {
    // Handle result.
});