【问题标题】:Understanding Prisma upsert了解 Prisma upsert
【发布时间】:2020-06-21 16:27:19
【问题描述】:

我试图在 Prisma 中使用一对多的关系,但我很困惑。我的目标是,当创建一个运动员时,它会被分配一个团队,并且同样更新团队以显示分配给它的所有运动员。我的解析器如下所示。

async function signUpUser(parent, args, { prisma }, info) {
    let password = await bcrypt.hash(args.password, 10)

    const team = await prisma.team({ id: args.team })

    const user = await prisma.createUser({
        ...args,
        password,
        team: { connect: { id: team.id } }
    })
    //create special user based on user type from args
    switch(args.userType) {
        case "ATHLETE":
            createAthlete(user, prisma)
            break
        case "COACH":
            createCoach(user, prisma)
            break
        case "HEAD_COACH":
            createHeadCoach(user, prisma)
            break
        case "PARENT":
            createParent(user, prisma)
            break
        default:
            createAthlete(user, prisma)
    }

    return {
        user
        }
    }

    async function createAthlete(user, prisma) {

    const athlete = await prisma.createAthlete({
       user: { connect: { id: user.id } }
    })

    return athlete
   }

这段代码几乎可以按照我的意愿运行。用户设置了一个团队和一个运动员。但是,在我的数据模型中,我希望将它们存储到的团队显示分配给该团队的所有运动员。我相信我需要使用 upsert 方法,但不知道如何。

【问题讨论】:

    标签: graphql apollo-server prisma


    【解决方案1】:
    async function createAthlete(user, team, prisma) {
    
        const athlete = await prisma.createAthlete({
           user: { connect: { id: user.id } }
        })
    
        const updatedTeam = await prisma.updateTeam({
            where: { id: team.id },
            data: {
                athletes: {
                    connect: {
                        id: athlete.id,
                    }
                }
            },
        })
        return {athlete, updatedTeam}
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 1970-01-01
      • 2022-01-04
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 2020-02-13
      • 2019-08-03
      相关资源
      最近更新 更多