【问题标题】:Unable to compare String from query parameter in nodejs无法从nodejs中的查询参数比较字符串
【发布时间】:2018-08-14 17:49:02
【问题描述】:

我是 node.js 和 javascript 的新手。 你能告诉我为什么这个比较不起作用吗?

我的路由处理程序代码:

friends = [{  
id: 0,
name: "Dan"
}]

app.get("/search", (req, res) => {
  if (req.query.name) {
  let friend = null;
  Object.keys(friends).forEach((id => {
    if (friends[id].name === req.query.name){
        friend = id;}
       }));

  res.send(friend);     
}//end of outer if block
});

我的搜索查询是:

localhost:3000/search?name="Dan"

谢谢!

【问题讨论】:

  • 我已经检查了两个friends[id].name 和req.query.name 的类型,它们都是String 类型。但是,当我在控制台上打印它们时,它分别给出了 Dan 和“Dan”。
  • 刚刚发现了问题。我实际上是在将“Dan”与“Dan”(查询字符串)进行比较。如果我将查询字符串更改为 name=Dan 它可以工作。

标签: javascript node.js url uri query-parameters


【解决方案1】:

在调用Object.keys(friends) 函数之前,您没有将friends 变量设置为任何值。因此,它没有任何内容可以创建密钥,并且永远不会执行 .forEach() 循环。

【讨论】:

  • 实际上它是一个全局变量并且在顶部。对不起!让我编辑我的代码。
  • @AmitGupta => 你的全局变量是一个对象数组。您不能对数组执行 Object.keys() 函数。您是否尝试检查.name 属性是否等于req.query.name 属性?
  • 不,我想比较字符串。
  • 它不起作用,即使我将循环更改为:friends.forEach(function(item){ console.log(item.name); if(item.name == req.query.name){ console.log('success'); }
【解决方案2】:

刚刚发现问题。我实际上是在比较"Dan" with ""Dan""(query String)。如果我将查询字符串更改为name=Dan,它就可以正常工作。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 2021-12-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多