import { connectDB } from "../../../lib/mongoose";
import { User, userValidation, loginValidation } from "../../models/User";
import { BadRequestError } from "../../../lib/ErrorHandler";
import asyncHandler from "../../../lib/asyncHandler";
import { NextResponse } from "next/server";
import { getDebugger } from "@/lib/debugger";
const debug = getDebugger("route");
export const POST = asyncHandler(async (req: Request) => {
await connectDB(process.env.MONGODB_URI);
const data = await req.json();
const { email, firstName, lastName, password } = data;
const { error } = userValidation.validate(data);
if (error) throw new BadRequestError(error.details[0].message);
const isEmailExist = await User.findOne({ email });
if (isEmailExist) {
throw new BadRequestError("email is already exist");
}
const user = new User({
firstName,
lastName,
email,
password,
});
await user.save();
return NextResponse.json(
{
message: `Success Signing Up!`,
success: true,
user,
},
{ status: 201 }
);
});
import { getDebugger } from "./debugger";
import { NextResponse } from "next/server";
const debug = getDebugger("async-error");
const asyncHandler = (cb) => async (req) => {
try {
await cb(req);
} catch (error) {
const statusCode = error.statusCode || 500;
const message = error.message || "Something went wrong";
debug(`Error ${statusCode}: ${message}`);
return NextResponse.json(
{
error: message,
},
{ status: statusCode }
);
}
};
export default asyncHandler;
Почему, когда я пытаюсь зарегистрировать нового пользователя, я получаю эту ошибку:
⨯ Ошибка: ответ от обработчика маршрута «C:\Users\parse\Documents\task-rabbit-new\src\app\api\test\route.ts» не возвращается. Убедитесь, что вы возвращаете Response
или NextResponse
во всех ветвях вашего обработчика.
Кроме того, даже когда я получаю эту ошибку, я все равно вижу новых пользователей в своей базе данных. и так, что здесь происходит? заранее спасибо всем
🤔 А знаете ли вы, что...
Node.js поддерживает работу с файлами и директориями на сервере.
Кажется, проблема в том, что ваш asyncHandler
ничего не возвращает в обычном случае:
const asyncHandler = (cb) => async (req) => {
try {
return await cb(req); // notice the insertion of the return keyword here
} catch (error) {
const statusCode = error.statusCode || 500;
const message = error.message || "Something went wrong";
debug(`Error ${statusCode}: ${message}`);
return NextResponse.json(
{
error: message,
},
{ status: statusCode }
);
}
};
Итак, что касается вашего мнения о создании пользователя, работа выполняется, но результаты не передаются обратно клиенту.