En mi componente Inicio, tengo esta función de búsqueda
export default function Home() { const { rootUrl } = useContext(UserContext); useEffect(() => { fetch(`${rootUrl}/api/products/featuredProducts`) .then((result) => result.json()) .then((result) => { console.log(result); }); }, []); }Se supone que eso extrae productos de la base de datos que se presentan. Pero cada vez que intento ejecutar esa búsqueda, se confunde con otra búsqueda en mi aplicación, que es la obtención de un solo producto, que es este código:
export default function ProductView() { const { productId } = useParams(); const { rootUrl } = useContext(UserContext); const { addToCart } = useContext(UserContext); const [productData, setProductData] = useState(""); useEffect(() => { fetch(`${rootUrl}/api/products/${productId}`) .then((result) => result.json()) .then((result) => { setProductData(result); }); }, []);Recibiré un error en mi API de back-end con este mensaje:
CastError: Cast to ObjectId failed for value "featuredProducts"Ese "featuresProducts" es mi punto final para mi primera búsqueda. Parece que algo lo confunde como mi ID de parámetro para mi segunda URL de búsqueda en mi componente ProductView, esta búsqueda a continuación:
fetch(`${rootUrl}/api/products/${productId}`)No entiendo por qué sucede esto, ya que mis otras rutas con "api/products/plus other endpoints here" funcionan bien, es solo que mi nueva adición para buscar productos destacados no funcionará
Definió su ruta como /products/:id , por lo que cada vez que su backend vea una ruta como /products/anything asumirá automáticamente (y correctamente) que anything es id. Puedes combatir esto de varias maneras.
Lo que haría es crear una ruta para buscar con id:
/products/id/:idy otro para destacados:
/products/featureden su back-end.