Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js回调hellp_Node.js_Express_Callback - Fatal编程技术网

Node.js回调hellp

Node.js回调hellp,node.js,express,callback,Node.js,Express,Callback,尽管没完没了的帖子、教程、视频和操作指南,我似乎无法让我的简单回调正常工作。如果有人能让我知道我在哪里,这将有助于填补我对回调的理解上的空白。我的很简单,很尴尬。基本上,我试图将查询结果从mongo(通过mongoose)返回给调用函数 调用函数: team1 = '2638'; var t = doesTeamExist('team1', function(team){ console.log(team); }); function doesTeamExist(id, res){

尽管没完没了的帖子、教程、视频和操作指南,我似乎无法让我的简单回调正常工作。如果有人能让我知道我在哪里,这将有助于填补我对回调的理解上的空白。我的很简单,很尴尬。基本上,我试图将查询结果从mongo(通过mongoose)返回给调用函数

调用函数:

team1 = '2638';
var t = doesTeamExist('team1', function(team){
  console.log(team);
}); 
function doesTeamExist(id, res){
    Team.findOne(id).populate('team').exec(function(err,team){
        console.log(team);
        res.team = team;
    });
};
处理功能:

team1 = '2638';
var t = doesTeamExist('team1', function(team){
  console.log(team);
}); 
function doesTeamExist(id, res){
    Team.findOne(id).populate('team').exec(function(err,team){
        console.log(team);
        res.team = team;
    });
};
我知道,正如我的控制台所显示的,适当的团队将返回doestreamexist

{ _id: 545930dc14a8e3bc9ffab864,
  id: '1532',
  name: 'TEAM1',
  alt_id: '2638',
  created: Fri Nov 07 2014 13:41:43 GMT-0700 (MST) }

但是我从调用函数中得到了一个未定义的函数。有人能看到这个洞吗?

你应该使用
res(team)
,而不是
res.team=team
,正如米罗斯拉夫提到的那样,使用
res(team)
可以完成你所需要的,但是如果你使用的是express 4.0,你可能需要使用
res.status(status\u code.)。send(team)

您可以在此处检查http协议的状态代码:


尽管米罗斯拉夫没有给出解释,但他的答案是100%正确的。它将纠正您的问题的原因是,您将函数(回调)传递给
doesTeamExist
,因此您需要像调用任何函数
res(team)
一样调用它。我不明白这怎么不能回答问题?“让我的简单回调工作”。问题就在我提到的那一行<方法中的code>res参数是从第一个代码段传递给函数的。如果要将查询的数据传递到那里,则必须以数据作为参数调用函数。因此,第
res(team)
行就是答案。你为什么要求批评或要求澄清?问题很清楚。(希望答案也是:))