PrismaClientValidationError:无效的 `prisma.roomMember.create()` 调用

问题描述 投票:0回答:1

如果我尝试创建一个不包含 RoomMember 的房间,一切都会按预期进行。但是,当我尝试使用 createRoomAction 创建成员时,遇到以下错误消息:

error Message

Invalid `prisma.roomMember.create()` invocation:

{
  data: {
    emailAddress: "[email protected]",
    role: "admin",
    name: "Said",
    userId: "user_2eUSQ4tHpc5dlmeNpqhYu27k3gT",
    roomId: "19058849-924f-4805-ba40-3c8513be5ed5",
    ~~~~~~
?   id?: String,
?   createdAt?: DateTime,
?   updatedAt?: DateTime
  }
}

Unknown argument `roomId`. Available options are marked with ?.

我的createRoomAction看起来像这样:

export async function createRoomAction(values: createAndEditRoomType): Promise<RoomType | null> {
    const { id: userId, emailAddresses, firstName } = await authenticateAndRedirect();
    const emailAddress = emailAddresses[0]?.emailAddress || "";
    const AdminName = firstName || "";

    try {
        const room = await prisma.room.create({
            data: {
                ...values,
                clerkId: userId,
                emailAddress: emailAddress
            }
        });

        const admin = await prisma.roomMember.create({
            data: {
                emailAddress: emailAddress,
                role: "admin",
                name: AdminName,
                userId,
                roomId: room.id, 
            }
        });

        return room;
    } catch (error) {
        console.error("Fehler beim Erstellen des Admins:", error);
        return null;
    }
}

我的棱镜模式看起来像这样

model Room {
        id String @id @db.Uuid @default(dbgenerated("gen_random_uuid()"))
        name String
        clerkId String
        type String
        controller String
        autoRevealCards Boolean
        showAveraging Boolean
        emailAddress String
        createdAt DateTime @default(dbgenerated("now()"))
        updatedAt DateTime @updatedAt
        roomMember RoomMember[]
    }
    model RoomMember{
        id String @id @db.Uuid @default(dbgenerated("gen_random_uuid()"))
        name String
        emailAddress String
        userId String
        role Role
        roomId String @db.Uuid
        room Room @relation(fields: [roomId] , references: [id])
        createdAt DateTime @default(dbgenerated("now()"))
        updatedAt DateTime @updatedAt
    }

我希望房间的创建者也是该房间的成员,并且每个房间都有多个成员,这意味着稍后我将为每个房间创建多个成员,并且它们应该连接到房间的 id。

我该如何解决这个问题?

database next.js prisma supabase
1个回答
0
投票

为什么不使用“嵌套写入”而不是两个单独的插入? const room = await prisma.room.create({ // Optional: include the room member in the response include: { roomMember: true, }, data: { name: 'Test Room', // .. all the other fields clerkId: userId, emailAddress: emailAddress, // Create a member and assign them to the room roomMember: { create: { emailAddress, name: adminName, userId, }, }, }, });

© www.soinside.com 2019 - 2024. All rights reserved.