[Prisma] 여러 기능

찐새·2022년 5월 20일
0

next.js

목록 보기
9/41
post-thumbnail

findUnique()

where에 맞는 데이터를 찾는다.

const user = await prisma.user.findUnique({
  where: {
    // ... 조건에 맞는 user를 찾음
  }
})

upsert()

새 레코드를 생성하거나 기존 레코드를 갱신한다.

const user = await prisma.user.upsert({
  create: {
    // ... user가 없다면 데이터 생성
  },
  update: {
    // ... user가 있다면 데이터 갱신
  },
  where: {
    // ... 조건에 맞는 user 찾음
  }
})

ES6 문법 활용

// email 또는 phone으로 가입할 경우

const login = email ? {email} : {phone:+phone}
const user = await prisma.user.upsert({
  create: {
    name: "익명",
    ...login,
  },
  update: {},
  where: {
    ...login,
  }
})

connect

unique 속성을 지정해 레코드를 연결한다.

// user와 관계된 Token
const Token = await prisma.token.create({
  data: {
    tokens: "1234",
      user: {
        connect: {
          id: user.id, // user id와 연결해 생성
        },
      },
  }
})

connectOrCreate

unique 속성을 지정해 레코드를 연결하거나 존재하지 않을 경우 새 레코드를 생성해 연결한다.

const Token = await prisma.token.create({
  data: {
    tokens: "1234",
      user: {
        connectOrCreate: {
          // upsert() 문법과 결합해 사용 가능
          create: {
    		name: "익명",
    		...login,
          },
          where: {
    		...login,
          }
        },
      },
  }
})

include

조건에 맞는 관계된 레코드를 포함할 것인지 여부를 정한다.

// "1234" 토큰과 관계된 user 레코드를 포함함.
const user = await prisma.user.findUnique({
  where: {
    tokens: "1234",
  },
  include: { user: true },
})

deleteMany

조건에 맞는 여러 레코드를 삭제한다.

const { count } = await prisma.token.deleteMany({
  where: {
    tokens: "1234", // 토큰이 1234인 prisma의 토큰을 삭제함
  }
})

참고
노마드 코더 - 캐럿마켓 클론코딩
Prisma documents

profile
프론트엔드 개발자가 되고 싶다

0개의 댓글