因此,我试图构建我的register方法,而不重新使用带有nextjs、trpc和nextauth的create-t3-app堆栈:
export const signUpRouter = router({
signup: publicProcedure.input(UserModel).mutation(async ({ ctx, input }) => {
debugger;
try {
const { nickname, email, password } = input;
//check duplicate users
const checkingUsers = await ctx.prisma.user.findFirst({
where: {
email,
},
});
if (checkingUsers) {
return { message: "User already exists..." };
}
//hash password
return await ctx.prisma.user.create({
data: {
nickname,
email,
password: await hash(password, 12),
},
});
} catch (error: any) {
console.log("error", error);
throw new Error(error);
}
}),
});
export default signUpRouter;
此文件位于pages/api/auth/signup.ts中是否应该将此文件放在服务器部分?
我的appRouter文件中有路由器
export const appRouter = router({
userLogin: userLoginRouter,
auth: authRouter,
signin: signInRouter,
signup: signUpRouter,
});
点击注册按钮时:
async function onSumitRegisterValues(values: any) {
const options = {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(values),
};
await fetch("http://localhost:3000/api/auth/signup", options)
.then((res) => res.json())
.then((data) => {
if (data?.ok) router.push("http://localhost:3000");
});
}
价值观形式包含昵称,电子邮件,密码和cpassword确认密码。我得到了500后
服务器错误类型错误:冲突解决程序不是函数
生成页面时发生此错误。任何控制台日志都将显示在终端窗口中。
也许是我缺乏对trpc和next的了解,但是ngl,它让我想把我的后端分离成不同的东西,但是既然我不急于建立这个项目,我真的想试着找出我应该做得更好的地方。
1条答案
按热度按时间rxztt3cl1#
为什么要使用fetch而不是使用trpc中的useQuery方法?trpc的全部意义在于可以跳过fetch,并且还具有类型安全性。
https://trpc.io/docs/useQuery