Saya tidak tahu kenapa, tetapi apabila saya cuba mendapatkan data dan memasukkannya ke dalam badan tindak balas, ia berkata undefined (dalam konsol). Saya mempunyai dua komponen yang hampir sama. Satu menggunakan kaedah POST dan mengembalikan isi kandungan, yang satu lagi menggunakan kaedah DELETE dan mengembalikan kandungan yang tidak ditentukan. Saya menggunakan seni bina Prisma.
Ini adalah POST yang boleh dijalankan dan mengembalikan badan 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`); } };
Ini adalah permulaan API fungsi ini, const { id_product } = req.body adalah sah.
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} })
Ini adalah masalah yang saya hadapi, komponen pada asasnya adalah sama kecuali kaedah:
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`); } };
Ini ialah API, const {id_product} = req.body is undefined
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 } })
Saya telah cuba menyelesaikan masalah ini selama beberapa jam sekarang tanpa kemajuan sama sekali.
Ini berfungsi sehingga kemas kini terkini. Terdapat banyak soalan mengenai GIthub, tetapi saya tidak tahu sama ada penyelenggara Next.js telah menjawab lagi. Pada masa ini ia menghalang kami daripada mengemas kini. Saya tahu ini bukan perkara biasa, tetapi ini adalah perubahan penting untuk Next.js dan saya tidak mahu memindahkan semua DELETE titik akhir :(.
https://github.com/vercel/next.js/issues/49353
https://github.com/vercel/next.js/issues/48096
https://github.com/vercel/next.js/issues/48898
delete
请求不包含正文,如果您需要在此请求中包含正文,可以尝试使用patch
Kaedah