首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Prisma upsert

理解Prisma upsert
EN

Stack Overflow用户
提问于 2020-03-10 02:25:42
回答 1查看 962关注 0票数 0

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

代码语言:javascript
复制
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方法,但不知道如何使用。

EN

回答 1

Stack Overflow用户

发布于 2020-03-10 05:20:57

代码语言:javascript
复制
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}
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60606359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档