Array Find() 方法在搜索有关 URL 参数的数据时始终返回“未定义”

Posted

技术标签:

【中文标题】Array Find() 方法在搜索有关 URL 参数的数据时始终返回“未定义”【英文标题】:Array Find() method is always returning 'undefined' while searching data with respect to URL parameters 【发布时间】:2022-01-14 00:54:11 【问题描述】:

我想显示整个数据数组中的数据,这些数据应该满足请求的 id 与数据的 id 匹配的条件。但是每次我尝试下面的代码时,我只会得到“未定义”作为 find 方法的输出。

代码


    import express from 'express';
    import data from "./data.js"
    
    const app=express(); 
    app.get('/products/api/:id',(req,res)=>
        const product = data.products.find((x) => x.id === req.params.id);
          if (product) 
               res.send(product)
          
          else
              res.status(404).send(message:`Product Not Found$req.params.id`);
          
      ) app.get('/products/api',(req,res)=>
        res.send(data.products) 
      ) app.get('/',function(req,res)
        res.send("server is ready") 
      ) const port=process.env.PORT || 5000 app.listen(5000,()=>
        console.log(`serve at http://localhost:$port`);
     )

【问题讨论】:

此代码不能在任何地方使用.find() 您的意思是 filter() 而不是 find()? 嗨,如果您的意思是过滤而不是查找,请确保来自请求和数据数组的 id 都与您使用的数据类型相同 === (严格条件)意味着 1 === ' 1' 是 false 应该是 1 === 1 否则使用 ==,希望对你有所帮助。 是的,对不起,我上传了错误的代码,它是查找而不是过滤器,我已经更新了它。 我找到了答案` const h=parseInt(req.params.id) const product = data.products.find((x) => x.id ===h ); ` 【参考方案1】:

您的代码缺少正文解析中间件。 尝试添加一个

app.use(express.json( extended: true )) 在您的路线之前。

另外请检查来自data.products.find((x) => x.id === req.params.id);id 是否属于string 类型。它可能是 numberObjectId mongoose 对象 ID。

【讨论】:

这有什么关系?该代码未尝试访问req.body。它正在读取的数据在 URL 而不是正文中。 你可能是对的,但他在某些时候仍然需要它。无论如何,我编辑了我的答案,以包括为什么这可能会失败的另一种可能性。【参考方案2】:

你需要做的就是,

改变这个:

const product = data.products.find((x) => x.id === req.params.id);

到:

const product = data.products.find((x) => x.id == req.params.id);

【讨论】:

以上是关于Array Find() 方法在搜索有关 URL 参数的数据时始终返回“未定义”的主要内容,如果未能解决你的问题,请参考以下文章

[二分搜索] leetcode 34 Find First and Last Position of Element in Sorted Array

在javascript中的JSON数组中搜索数字

读BeautifulSoup官方文档之html树的搜索

LeetCode 153, 154. Find Minimum in Rotated Sorted Array I & II

Leetcode.154.Find Minimum in Rotated Sorted Array II

loadrunner中web_reg_find使用使用方法