从Node.JS应用中的URL提取参数的正确方法

yptwkmov  于 2023-03-01  发布在  Node.js
关注(0)|答案(1)|浏览(143)

我在Node.JS应用程序中有代码,但仅部分工作。
虽然我想我已经知道哪种情况有问题,但我不知道解决问题的正确方法。
下面是问题的相关代码:

app.get('/Path', (req, res) => {
    .....
    let kickVal = req.url.substring(9,14) // Extracting a 5 digits string from the URL.
    // Instead of the line above, I have also tried to use querystring to get the value for kickVal, but it did not work any better.
    .....
    doSomeUsefulStuff(res,kickVal)
  })
  
  function doSomeUsefulStuff(response,kickStr=null) {
    ... do some work using kickStr ...
    // Here kickStr does not always shows up as expected.
  }

例如,当使用:
网址:http://localhost:3000/路径?
网址:http://本地主机:3000/路径?
那么一切都很好,我得到了值,1023431204,用于 doSomeUsefulStuff 中的 kickStr
但使用时:
网址:http://本地主机:3000/路径?
网址:http://本地主机:3000/路径?
我在第一种情况下得到 675,在第二种情况下得到 2201,而我期望的是字符串 '01243''04231'
一般来说,当数字串包含前导零时,就会出错。我怀疑这是因为req.url不是一个简单的字符串。但是解决这个问题的正确方法是什么呢?
需要注意的是,我没有做任何类型的Ints转换,上面的代码(kickVal = req.url.substr...)是我提取值(kickVal)的唯一代码,为什么这不起作用当然是我的第一个问题。

jgwigjjp

jgwigjjp1#

我终于发现了是什么让事情变得糟糕。我需要在 kickVal 周围加引号。
换句话说,代替这行代码的是:

doSomeUsefulStuff(res,kickVal)

我不得不用这个:

doSomeUsefulStuff(res,"'"+kickVal+"'")

一切都解决了。

相关问题