我正在尝试为 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() });
});
最佳答案
我看不出有什么问题。
您的 getUsers
函数不会显示在您的第一个 console.log
中,因为它是在您的 userManagement
原型(prototype)上设置的。
第二个 console.log
返回未定义,因为您在 getUsers
函数中没有返回任何内容。
您必须传递回调才能异步获取结果。
// module
UMa.prototype.getUsers = function(cb) {
User.find(cb);
};
// router
userManagement.getUsers(function (err, users) {
// Handle result.
});
关于javascript - nodejs require 返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32656917/