我想为node.js编写自己的模块,但是当我需要它时,它是空的,我定义的方法是未定义的。nodejs需要返回空对象
// 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()'函数同步返回一个异步值。这个问题可能每天会被多次询问。我会看看我是否可以找到一个好的dup来标记它。 'getIsers()'有一个异步响应。您只能通过回调返回值。 – jfriend00
@Amit - 'User.find()'看起来完全像数据库调用。而'/ users'的node.js路由将是一个API调用。要么是网络操作,要么是异步。而且,为什么会在界面中通过回调返回结果,如果不是异步? – jfriend00
@Amit - 你的“答案”不提供答案。您不显示任何解决方案。您简要指出可能导致问题的原因,但不提供解决方案。这不是一个好的答案。另外,在11k的代表中,您应该知道这类问题每天会被多次提问,因此没有理由通过回答另一个副本来污染版本库。做一点研究,找到一个好的重复,并将其标记为这样。 – jfriend00