Ich weiß nicht wirklich warum, aber wenn ich versuche, die Daten abzurufen und in den Antworttext einzufügen, wird in der Konsole undefiniert angezeigt. Ich habe zwei fast identische Komponenten. Einer verwendet die POST-Methode und gibt einen ausgefüllten Körper zurück, der andere verwendet die DELETE-Methode und gibt einen undefinierten Körper zurück. Ich verwende die Prisma-Architektur.
Dies ist ein POST, der ausgeführt werden kann und den API-Body zurückgibt
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`); } };
Dies ist der Anfang der API dieser Funktion, const { id_product } = req.body ist gültig.
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} })
Das ist das Problem, das ich habe. Die Komponenten sind im Grunde die gleichen, bis auf die Methode:
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`); } };
Dies ist eine API, const {id_product} = req.body ist undefiniert
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 } })
Ich versuche nun schon seit ein paar Stunden, dieses Problem zu lösen, ohne dass ich überhaupt Fortschritte gemacht habe.
这在最近更新之前一直有效。 GIthub 上有很多问题,但我不知道 Next.js 的维护者是否已做出回应。目前它阻止我们更新。我知道这并不典型,但这是 Next.js 的一项重大更改,我不想迁移所有 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
delete
请求不包含正文,如果您需要在此请求中包含正文,可以尝试使用patch
方法