ExpressJS中出现奇怪的情况:未调用回调函数

时间:2014-07-21 16:07:29

标签: javascript node.js rest express get

我正在使用带节点的expressjs来创建我的网络应用程序,但它没有按预期工作。

这里发生了一些非常奇怪的事情,如果我转到浏览器中的第一个链接,它会按预期运行,但如果我转到第二个链接,它就不会执行回调并返回null。正如你可能会看到他们是完全相同的!

第一个API代码片段(第一个链接):

/**
 * GET /workspace/friends/list
 * JSON friend list API
 */

app.get('/workspace/friends/list', passportConf.isAuthenticated, function (req, res) {
  var userFriends = [];
  //console.log(req);
  for (var i = 0; i < req.user.friends.length; i++) {
    if (req.user.friends[i].verified) {
      userFriends.push(req.user.friends[i]);
    }
  }
  res.json(userFriends);
});

第二个API代码片段(第二个链接):

/**
 * GET /workspace/friends/sentRequests/
 * JSON friends requests list API
 */

//TODO: Fix API
app.get('/workspace/friends/sentRequests', passportConf.isAuthenticated, function (req, res) {
  var userFriends = [];
  //console.log(req);
  for (var i = 0; i < req.user.friends.length; i++) {
    if (!req.user.friends[i].verified) {
      userFriends.push(req.user.friends[i]);
    }
  }
  res.json(userFriends);
});

注意: 我还必须补充一点,如果我取消注释两个中的console.logs,我会从第一个而不是第二个获取日志。

这怎么可能?以前有人遇到过类似的东西吗?我怎么能解决它?

1 个答案:

答案 0 :(得分:0)

好吧我明白了。它突然出现了一种Bug,它禁止一个人使用链接中的长和/或大写字符please see this issue I've created (issue #2256)

因此,当我将其更改为以下内容时,它运行良好:

/**
 * GET /workspace/friends/sentRequests/
 * JSON friends requests list API
 */

//TODO: Fix API
app.get('/workspace/friends/requests/sent', passportConf.isAuthenticated, function (req, res) {
  var userFriends = [];
  console.log(req);
  for (var i = 0; i < req.user.friends.length; i++) {
    if (!req.user.friends[i].verified) {
      userFriends.push(req.user.friends[i]);
    }
  }
  res.json(userFriends);
});

注意: 我还没弄清楚错误的来源。

更新(2014年7月22日): 发生的事情是样板Skeleton为{{1}定义了Express的选项启用所以当我使用时也使用模块express-uncapitalize所以当我用大写字符定义链接并在浏览器中放置完全相同的链接时,它没有大写,表达无法找到该链接但没有说明(因为它区分大小写)。