Req.body возвращает ReadableStream на моем маршруте NextJS

Я не понимаю, что не так с моим кодом. Я читал и пробовал другие подобные вопросы, но они мне не помогли.

Есть ли кто-нибудь, кто может мне помочь?

Это мой маршрут.js

import dbConnect from "@/lib/dbConnect";
import User from "@/models/User";
import { NextResponse, NextRequest } from "next/server";
import type { NextApiResponse, NextApiRequest } from "next";

export async function POST(req: NextApiRequest) {
  await dbConnect();
  let data = await req.body;
  console.info(data); //HERE ReadableStream { locked: false, state: 'readable', supportsBYOB: false } HERE

  try {
    const user = await new User(data);
    await user.save();

    return NextResponse.json({ user }, { status: 201 });
  } catch (error) {
    console.info("here 3");
    if (error instanceof Error) {
      return NextResponse.json(
        { error: error.message || "bilinmeyen bir hata" },
        { status: 500 }
      );
    } else {
      return NextResponse.json(
        { error: "bilinmeyen bir hata" },
        { status: 500 }
      );
    }
  }
}

Это моя просьба;

try {
      const res = await fetch("http://localhost:3000/api/register", {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify(data),
      });

      const dataRes = await res.json();
      console.info("dataRes" + dataRes);
    } catch (error) {
      console.info(error);
    }
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваш обработчик маршрута должен принимать тип Request вместо NextApiRequest.

export async function POST(req: Request) {
  // ...
}

который затем позволяет вам читать тело так, как вы хотите, например, используя метод Request#json.

export async function POST(req: Request) {
  // ...
  let data = await req.json();
  // ...
}

Информацию по этой теме можно найти в документации Next.js здесь.

P.S. вы также должны возвращать стандартные объекты Response вместо NextResponse, см. вышеупомянутую документацию.

Ты герой. Я так смущен созданием собственного API, используя ответ или следующий ответ, а не потому, что это первый раз, когда я пытаюсь закодировать конечную точку. Спасибо, теперь работает

idiltugba 16.03.2024 18:17

Другие вопросы по теме

Похожие вопросы