首页 > 解决方案 > CastError:转换到 ObjectId 失败,路径中的值“未定义”

问题描述

我正在尝试使用从 apis 获取数据,在我的 useEffect 函数中,它包含 2 个获取请求。第二个获取请求需要一个基于第一个获取请求的返回值的参数。但是我遇到了一个错误,即 CastError: Cast to ObjectId failed for value "undefined" at path from mongoose。任何人都可以提供帮助或有什么干净的方法可以解决?非常感谢!

例如:

 const[data,setdata]=useState([])
 useEffect(() => {
    axios.get('http:localhost.....').then({res=>{
         setdata(res.data)
  }})
   axios.get(`http:localhost.....${data._id}`)
}, [])

标签: reactjsmongooseuse-effectmern

解决方案


那是因为数据将在下一次渲染时可用,添加另一个 useEffect 以在数据有值时触发第二次调用:

 const[data, setData]= useState([]);

 useEffect(() => {
    axios.get('http:localhost.....').then(res=> setData(res.data);
  }, [])

useEffect(() => {
   if(data.lenght){
     axios.get(`http:localhost.....${data._id}`);
   }
  }, [data])

推荐阅读