3

我想使用$transaction,但我不知道应该将什么类型传递给 Prisma,以便它为我提供模型的类型检查和自动完成功能。

export default async function SignUp(data: SIGNUP_INTERFACE) {
  try {
    let user = await prisma.$transaction(async (prisma: any /* <- this */) => {
      let encrypted_password = await bcrypt.hash(data.password, 10);
      // 1. Add user to database
      const user = await prisma.user.create({
        data: {
          username: data.username,
          password: encrypted_password,
        },
      });

      // 2. Add email/phone number to database
      if (data.phoneNumber) {
        await prisma.user_phone.create({
          data: { phone_number: data.phoneNumber },
        });
      }
      if (data.email) {
        await prisma.user_email.create({
          data: { email: data.email },
        });
      }
    });

    return user;
  } catch (err: any) {
    throw new CustomError(err.message);
  }
}

我努力了

PrismaClient<Prisma.PrismaClientOptions, never, Prisma.RejectOnNotFound | Prisma.RejectPerOperation | undefined>

但它给了

类型 '(prisma: PrismaClient<PrismaClientOptions, never, RejectOnNotFound | RejectPerOperation | undefined>) => Promise<...>' 缺少来自类型 'PrismaPromise[]' 的以下属性:pop、push、concat、join 和 28更多的

4

1 回答 1

3

从评论中可以看出,该interactiveTransactions标志应该已启用以允许新的事务样式,这反过来又可以PrismaClient用作prisma.

于 2021-09-11T18:18:30.430 回答