4. CreateAcount

김종민·2022년 4월 21일
0

insta-backend

목록 보기
4/37
  1. createAccount.typeDefs.js
import { gql } from 'apollo-server'

export default gql`
  type CreateAccountResult {
    ok: Boolean!
    error: String
  }
  type Mutation {
    createAccount(
      username: String!
      email: String!
      password: String!
    ): CreateAccountResult!
  }
`
  1. createAccount.resolvers.js
import prisma from '../../client'
import bcrypt from 'bcryptjs'

export default {
  Mutation: {
    createAccount: async (_, { username, email, password }) => {
      try {
        const existingUser = await prisma.user.findFirst({
          where: { OR: [{ username }, { email }] },
        })
        if (existingUser) {
          throw new Error('This username/password is already taken.')
        }
        const uglyPassword = await bcrypt.hash(password, 10)
        await prisma.user.create({
          data: {
            username,
            email,
            password: uglyPassword,
          },
        })
        return {
          ok: true,
        }
      } catch (e) {
        return e
      }
    },
  },
}
  1. npm i bcryptjs를 통해 암호화 library setup
  2. root 는 '_' 로 넣고, arg에 username, email, passowrd 받음.
  3. existingUser 찾아서 존재할 경우 throw new Error 만듬.
  4. uglyPassword 만듬. use bcrypt
  5. await prisma.user.create로 user create. password: uglyPassword 명심
  6. success => return { ok: true}

보고또보고 실습하고 또실습하자
나는 머리가 그닥이라~

profile
코딩하는초딩쌤

0개의 댓글