如何从node.js请求调用返回数据? (undefined不是函数)

时间:2013-08-10 23:00:11

标签: node.js

我很确定我在这里错过了一个回调:

来自tools.js的

exports.getServerPermalink = function(username, callback) {
requestURL = config.apiServer+ username + myUrl
request(requestURL, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    list = JSON.parse(response.body);
    console.log(list);
    newPermalink = list[0].permalink;
  } else {
    console.log(error);
  }
  callback(null, newPermalink);
  });
}

在这里调用,我的主文件(包括tools.js):

newPermalink = tools.getServerPermalink(checkSession.username);
res.redirect('/'+ newPermalink) ;   

但我得到错误“undefined is is a function”指向

      callback(null, newPermalink);

当我尝试运行它时。

任何指向“require”模块的示例的指针都不仅仅是console.log的内容。非常感谢。

2 个答案:

答案 0 :(得分:3)

callback似乎未定义,因为您没有将其传递给模块方法

应该是这样的:

tools.getServerPermalink(checkSession.username, function(argument, newPermalink){
    res.redirect('/'+ newPermalink) ;
});

同样tools.getServerPermalink()不直接返回url(它不会返回任何内容,因为内部请求是异步的)但是将它作为第二个参数传递给你的回调函数。

答案 1 :(得分:0)

你的exports.getServerPermalink是一个定义了2个参数的函数,但是当你调用它时,你只传入一个:newPermalink = tools.getServerPermalink(checkSession.username);