当前位置: 首页 > 面试题库 >

在Node JS中使用Express在查询字符串中进行预路由

胡弘毅
2023-03-14
问题内容

我正在尝试使用express来解析查询字符串,以防设置某些参数并在实际路由发生之前执行一些代码。用例是获取某个可以设置的值,而与所使用的链接无关。我使用express’功能使用next()将内容传递给下一个可能的规则。

到目前为止,我尝试过-在所有app.get / post-rule-block的最顶部:

app.get('[?&]something=([^&#]*)', function(req, res, next) {
  var somethingID = req.params.something;
  // Below line is just there to illustrate that it's working. Actual code will do something real, of course.
  console.log("Something: "+somethingID);
  next();
})

app.get('/', site.index);

并且:

app.param('something', function(req, res, next) {
  var somethingID = req.params.something;
  console.log("Something: "+somethingID);
  next();
})

app.get('/', site.index);

应触发的示例:

URL: www.example.com/?something=10239
URL: www.example.com/superpage/?something=10239
URL: www.example.com/minisite/?anything=10&something=10239

不幸的是,我的解决方案都没有真正起作用,所有发生的事情是,触发了下一个匹配规则,但是从未执行过上面的小功能。有人对此有想法吗?

编辑:我确实知道,该参数示例无法正常工作,因为之后我没有在任何其他路由规则中使用所述参数,因此只有在此之后才会触发该参数。

我也确实理解,这意味着逻辑,Express会忽略查询字符串,并且 通常
在路由已经发生之后在函数中进行解析。但是如上所述,我需要使它“与路由无关”,并且可以处理在此应用程序中处理的任何URL。


问题答案:

express不允许您基于查询字符串进行路由。如果存在相关参数,您可以添加一些执行某些操作的中间件;

app.use(function (req, res, next) {
    if (req.query.something) {
        // Do something; call next() when done.
    } else {
        next();
    }
});

app.get('/someroute', function (req, res, next) {
    // Assume your query params have been processed
});


 类似资料:
  • 问题内容: 我正在使用AngularJS路由,并试图查看如何使用查询字符串(例如 )。Angular无法理解包含相同名称的键值对的路由: 问题答案: 我认为路由不适用于查询字符串。可以使用 如下方式而不是使用更RESTful的URL,然后按以下方式定义路由: 或许

  • 问题内容: 我正在使用带有Mongoose ORM的MongoDB在Node.js / Express中构建一个基本博客。 我有一个预“保存”钩子,可以用来为我自动生成一个博客/想法。除在我要查询的部分之前,我想查询一下是否有其他现有的帖子,然后再继续操作,这一切都很好。 但是,似乎无法访问.find或.findOne(),因此我不断收到错误消息。 解决此问题的最佳方法是什么? 问题答案: 不幸的

  • 本文向大家介绍nodejs中转换URL字符串与查询字符串详解,包括了nodejs中转换URL字符串与查询字符串详解的使用技巧和注意事项,需要的朋友参考一下 一个完整的URL字符串中,从"?"(不包括?)到"#"(如果存在#)或者到该URL字符串结束(如果不存在#)的这一部分称为查询字符串. 可以使用Query String模块中的parse方法将该字符串转换为一个对象,parse方法的使用方式如下

  • 问题内容: 我尝试在提交之前对该字符串进行。 问题答案: 你需要将参数传递为映射或2元组序列,例如: Python 3或以上 采用: 请注意,这在通常意义上不会进行url编码(请看输出)。为此使用。

  • 问题内容: 我有以下状态: 当我点击URL时,?customer查询字符串被剥离,而我处于状态。 对我而言,最有意义的只是在状态定义中添加a ,但这使我犯了一个错误,抱怨我同时指定了url和params。 我尝试做的任何例子将不胜感激。 问题答案: 您应该修改字符串属性以包括查询参数,如下所示: 可以使用:分隔多个参数,以添加多个参数: 查看文档

  • 尝试使用通配符进入和弹性搜索精确短语搜索时遇到问题query_string。 希望能够返回结果,这将是所有变体的精确短语。i、 e.“库尔斯酿酒厂”、“库尔斯酿酒厂”、“库尔斯酿酒厂”等。 我不同意这种方法,但想搜索大部分文档以找到匹配的1或2个字段。