Prisma 使用同一连接创建多个记录

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

我尝试在票证中的模型公会中创建多个记录。它是一个数据库,其中包含来自公会的所有有效开放门票。

但是,如果我想创建第二条记录,因为打开了第二张票证,它只会更新票证中已存在的条目,但我想创建一个新记录。

我现在不知道做错了什么,请寻求帮助......

async function storeTicketData(guildId, ticketChannelID, ticketData) {
    try {
        
        await prisma.ticket.create({
            data: {
                guild: {
                    connect: { guildId: guildId.toString() } 
                },
                ticketId: ticketData.ticketId || 0,
                channel: BigInt(ticketChannelID),
                owner: BigInt(ticketData.ticketOwner),
                state: ticketData.state || 'open',
                claimedBy: ticketData.claimedBy || null,
                addedUsers: ticketData.addedUsers || [],
                interactions: ticketData.interactions || [],
                history: ticketData.history || [],
                timer: ticketData.timer || false,
                timerEnd: ticketData.timerEnd || null,
                transcriptPermissions: ticketData.transcriptPermissions || ["private"],
                transcriptUrl: ticketData.transcriptUrl || "",
                panelId: ticketData.ticketPanelId,
            }
        });

    } catch (error) {
        if (error.code === 'P2002') {
            console.error('Ticket with channel-id already exist in ticket database:', error);
        } else {
            console.error('Error on saving ticket to ticket database:', error);
        }
    }
}
model Guild {
    id               Int                @id @default(autoincrement())
    guildId          String             @unique
    locale           String             @default("en-US")
    createdAt        DateTime           @default(now())
    updatedAt        DateTime?          @updatedAt
    TicketModule     TicketModule[]
    Tickets          Ticket[]
    StatisticsModule StatisticsModule[]
    GuildMemberAdd   GuildMemberAdd[]
    GuildMemberLeave GuildMemberLeave[]
    GuildMemberKick  GuildMemberKick[]
    GuildMemberBan   GuildMemberBan[]
    GuildStatistics  GuildStatistics[]

    @@schema("public")
}

model Ticket {
    id       String @id @default(uuid())
    ticketId BigInt
    panelId  String
    guild    Guild  @relation(fields: [guildId], references: [id])
    guildId  Int
    owner    BigInt
    channel  BigInt @unique

    state        String @default("open")
    claimedBy    BigInt?
    addedUsers   Int[]
    interactions Json[] // buttons modals etc
    history      Json[] // messages etc

    timer    Boolean
    timerEnd DateTime?

    transcriptPermissions String[] @default(["private"]) // public, private, role, user
    transcriptUrl         String?  @default("")

    createdAt DateTime @default(now())
    updatedAt DateTime @updatedAt

    @@schema("tickets")
}

javascript discord.js prisma
1个回答
0
投票

" guild Id String @unique " 由于公会ID是唯一的,所以不能用不同的公会ID创建多条记录

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