我试图为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() });
});
答案 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.
});