Maison > Questions et réponses > le corps du texte
Je ne sais pas vraiment pourquoi, mais lorsque j'essaie d'obtenir les données et de les mettre dans le corps de la réponse, il est indiqué non défini (dans la console). J'ai deux composants presque identiques. L'un utilise la méthode POST et renvoie un corps rempli, l'autre utilise la méthode DELETE et renvoie un corps non défini. J'utilise l'architecture Prisma.
Il s'agit d'un POST qui peut être exécuté et renvoie le corps de l'API
export default function Product({ id_product, name, link_image, price, }: ProductProps) { const [test, testing] = useState(false); const { push: relocate } = useRouter(); const onAddToCart = async () => { let response = await fetch("/api/addToCart", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id_product: id_product, }), }); if (response.ok) { toast.success(`${name} was added to the cart`); } else { toast.error(`${name} is already in your cart`); } };
C'est le début de l'API de cette fonction, const { id_product } = req.body est valide.
async function handlePost(req: NextApiRequest, res: NextApiResponse) { const session = await getServerSession(req, res, authOptions); const client = connexion() const { id_product } = req.body; const user = await client.user.findFirst({ where: { email: session?.user?.email || undefined} }) let cart = await client.cart.findFirst({ where: {id_user: user?.id_user} })
C'est le problème que j'ai, les composants sont fondamentalement les mêmes sauf pour la méthode :
type ProductProps = products; export default function ProductItem({ id_product, description, publication_date, author, name, link_image, price, }: ProductProps) { const onDeleteFromCart = async () => { let data = { id_product: id_product } let response = await fetch("/api/deleteFromCart", { method: "DELETE", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data), }); if (response.ok) { toast.success(`${name} was succesfully removed from your cart`) } else { toast.error(`Error`); } };
Il s'agit d'une API, const {id_product} = req.body n'est pas défini
async function handleDelete(req: NextApiRequest, res: NextApiResponse) { const session = await getServerSession(req, res, authOptions); const client = connexion() const { id_product } = req.body console.log(id_product) const user = await client.user.findFirst({ where: { email: session?.user?.email || undefined} }); let cart = await client.cart.findFirst({ where: {id_user: user?.id_user} }); let cart_item = await client.cart_item.findFirst({ where: { id_cart: cart?.id, id_product: id_product } })
J'essaie de résoudre ce problème depuis quelques heures maintenant sans aucun progrès.
P粉4773692692024-01-03 20:14:48
Cela a fonctionné jusqu'à la dernière mise à jour. Il y a beaucoup de questions sur GIthub, mais je ne sais pas si les responsables de Next.js ont encore répondu. Actuellement, cela nous empêche de mettre à jour. Je sais que ce n'est pas typique, mais il s'agit d'un changement radical pour Next.js et je ne veux pas migrer tous les points de terminaison DELETE :(.
https://github.com/vercel/next.js/issues/49353
https://github.com/vercel/next.js/issues/48096
https://github.com/vercel/next.js/issues/48898