【问题标题】:Express not detecting query parametersExpress 未检测到查询参数
【发布时间】:2016-11-29 14:53:25
【问题描述】:

我正在使用 MEAN JS 框架来创建应用程序。我的目的是在网站加载时检测一个查询参数,然后为应用设置某些参数。

我的 server.js :

exports = module.exports = app;

服务器控制器

exports.index = function(req, res) {

 console.log('URL is ' + req.url);
 console.log('Path is ' + req.path);
 var param1 = req.query.param1;
 console.log('Parameter : ' + param1);
 console.dir(req.query);

 res.render('index', {
    request: req,
    myparam : param1 //Setting my custom parameter
 });
};

访问的网址:

http://localhost:3000/#!/?param1=test

输出:

URL is /
Path is /
Parameter : undefined
{}

根本没有检测到查询参数。有人可以解释为什么会发生这种情况。我知道 Express 在路由时会忽略参数,但它是否也会剥离 url?

编辑:

这是导致错误的角度片段网址。一旦我使 URL 正常,Express 使用上述方法检测到所有查询参数。

编辑 2:

这里有详细解答

MEANJS Get URL Parameters

【问题讨论】:

  • 你可以使用 body-parser 获取参数:req.body.param1
  • 谢谢,试一试。虽然查询字符串参数应该存储在 req.query 对吗?它怎么连检测都没有?
  • 试试 req.QueryString("param1")
  • req.body 也是空的。对于 req.QueryString,它给出了一个错误,指出不存在这样的函数。
  • 感叹号是干什么用的?我第一次在网址中看到它

标签: express mean-stack meanjs


【解决方案1】:

由于我无法访问完整代码,因此我不能 100% 确定这是适合您的正确解决方案。

虽然它对我来说很好用:

定义:

var query = require('url').parse(req.url,true).query;

然后:

var param1 = query.param1

如果这有帮助,请告诉我:)

【讨论】:

  • 错误是由于#!由 Angular 和 MEANJS 框架添加到 URL。 Express 没有检测到 #! 之外的任何查询字符串参数。我切换到干净的 URL 并解决了问题。不过感谢您的建议:)。
猜你喜欢
  • 2019-11-11
  • 1970-01-01
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 2011-10-10
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
相关资源
最近更新 更多