javascript res.status不是函数Next.js 14

py49o6xq  于 2023-11-15  发布在  Java
关注(0)|答案(2)|浏览(117)

我是Next js的新手,我整天都在面对一个问题。
这是我的API,用于在用户存在时检查mongoDB

import {connect} from '../../../../lib/mongodb';
import User from '../../../models/userModel';

export async function POST(req, res) {
    try {
        // Get email from request body
        const {email} = await req.json();

        // Connect to database
        await connect();

        // Find user by email
        const user = await User.findOne({email});

        // If user exists, return error
        if (user) {
            return res.status(400).json({message: "User already exists"});
        } else {
            // Return response
            return res.status(201).json({message: "Email is non registered."});
        }
    } catch (error) {
        console.error(error);
        return res.status(500).json({message: "Something went wrong while register"});
    }
}

字符串
第一个月
我试着用res切换req,我试着用NextResponse和NextRequest,但我读到它们只在中间件中使用。

blmhpbnm

blmhpbnm1#

你可以这样写:

const response = {
  success: 'Logged in successfully'
};
return new Response(JSON.stringify(response), {
  status: 200,
  headers: {
    "message": "Blurblur~"
  },
});
}

else 
  
return NextResponse.status(200).json({
  error: 'Authentication failed'
});

字符串

kr98yfug

kr98yfug2#

您应该使用Response对象

if (user) {
   return new Response.json({ message: "User already exists" },
       {
           status: 200,
           headers: {
               "content-type": "application/json"
           }
       })
}
else {
   return new Response.json({ message: "Email is non registered" },
       {
           status: 404,
           headers: { "content-type": "application/json" }
       })
}

字符串
TypeScript警告:Response.json()仅在TypeScript 5.2中有效。如果您使用较低的TypeScript版本,则可以使用NextResponse.json()作为键入的响应。

相关问题