使用Nextjs和trpc返回解析器的登录方法不是函数



所以我试图建立我的注册方法,而不会重新发明与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/sign .ts内部我应该在服务器部分有这个吗?

我有路由器在我的approouter文件

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");
});
}

values表单包含昵称、email、password和cpassword,用于确认密码。我的帖子得到了500分

服务器错误TypeError: resolver不是一个函数

生成页面时发生错误。所有控制台日志将显示在终端窗口中。

也许是我对trpc和next缺乏了解,但ngl,这让我想把我的后端分成不同的东西。但既然我不急于建立这个项目,我真的想试着找出我应该做得更好的地方。

为什么使用fetch而不是使用trpc中的useQuery方法?trpc的全部意义在于,你可以跳过fetch,并且还具有类型安全。

https://trpc.io/docs/useQuery

最新更新