如何在express,param和查询中从url获取id似乎不起作用

时间:2014-02-01 11:50:39

标签: node.js express

我有一个网址,我正在尝试获取ID,但它没有工作req.params或req.query

app.get('/test/:uid', function testfn(req, res, next) {
  debug('uid', req.params.uid);  // gives :uid
  debug('uid', req.query.uid);  // gives undefined      
});

我正在做像这样的ajax调用

$(document).on('click', 'a.testlink', function(e) {
  $.ajax({
    type: "GET",
    url: '/test/:uid',
    success: function(var) {
      console.log('success');
    },
    error: function() {
      alert('Error occured');
    }
  });
  return false;
});

我正在使用

app.use(express.json());
app.use(express.urlencoded());

而不是身体解析器

2 个答案:

答案 0 :(得分:31)

您的代码按预期工作:ajax调用指定了url: '/test/:uid' :uid req.params.uid

尝试发送其他内容:url: '/test/123'req.params.uid将包含123

答案 1 :(得分:3)

这是一个可行的例子。我将从头开始逐步说明:

express myproject
cd myproject
npm install

打开app.js并在文件中的某处添加 - 也许就在行app.get('/test/:uid',test);

之前
var test = function(req,res,next) {
  // do whatever logic is needed 
  res.end('Displaying information for uid ' + req.params.uid);
}
app.get('/test/:uid',test);

现在,打开一个新终端,确保您在myproject目录中并输入:

node app.js

现在您可以在本地计算机上访问http://localhost:3000/test/45,您应该看到:

Displaying information for uid 45

如果您不是从本地计算机访问,请确保更改上面的URL以匹配您的节点应用程序运行的任何服务器。

此外,这只是一个简单的例子。您可能最好通过在新安装的Express应用程序中将路径放置在类似于routes目录示例设置的文件中来组织所有内容。您可以在网上找到更详细的例子,例如this一个和this一个。此外,在Node中我已经看到的在Node中组织/重用代码的最佳解释之一是在NodeJS in Action中。