interface DefaultResponse<T> {
success: boolean;
message?: string;
user?: T;
}
export async function POST(req: Request) {
const body: Pick<User, 'email' | 'password'> = await req.json();
const user = await prisma.user.findUnique({ where: { email: body.email } });
if (!user) {
return new Response(
JSON.stringify({ message: 'email is invalid', success: false }),
);
}
return new Response(
JSON.stringify({ message: '', sueecss: true, user }),
) as DefaultResponse<User>; // This method will not work.
}
字符串
上面的代码检查电子邮件是否有效,如果匹配,则使用成员信息进行响应。
通过为响应体指定一个类型与上面的代码一样,我想指定一个类型,如果success拼写错误,则会发出错误警告。
1条答案
按热度按时间ej83mcc01#
你试图将
JSON.stringify(...)
的值转换为DefaultResponse
,这是一个字符串。这将出错,但不是你想要的原因。我建议键入处理程序函数的返回值,并使用
Response.json()
或(NextResponse.json()
,如下所示:字符串
此外,您可能希望在将密码字段发送回响应之前,从Prisma检索的用户对象中删除该字段。请参阅:https://www.prisma.io/docs/concepts/components/prisma-client/excluding-fields