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

lndjwyie  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(148)

因此,我试图构建我的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,它让我想把我的后端分离成不同的东西,但是既然我不急于建立这个项目,我真的想试着找出我应该做得更好的地方。

rxztt3cl

rxztt3cl1#

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

相关问题