ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • #3.2 requestSecret Resolver
    인스타그램 클론 코딩/#3 GraphQL API 2019. 12. 20. 00:23

    비밀값 요청 기능

     

    https://www.randomlists.com/nouns?dup=false&qty=500 라는 사이트에서 형용사 , 명사 500개씩 복사해서 붙여준다.

     

     

    1. src 폴더 안에 utils.js , words.js파일 생성

    (utils.js은 시크릿 코드 작성파일, words.js은형용사,명사 붙여넣을파일)

     

    2. words.js파일안에 다음과 같이 작성

    export const adjectives = []; //형용사
    
    export const nouns = []; //명사
    
    // []안에 형용사 , 명사 500개 붙여넣고 alt+ shift + i 를 활용해서 "" , 추가하여 문자열로만들기

    3. utils.js파일안에 다음과 같이 작성

    import { adjectives, nouns } from "./words";
    
    export const generateSecret = () => {
      const randomNumber = Math.floor(Math.random() * adjectives.length);
      return `${adjectives[randomNumber]} ${nouns[randomNumber]}`;
    };
    

    4. requestSecret.graphql

    type Mutation {
      requestSecret(email: String!): Boolean!
    }
    

     

    5. requestSecret.js

    import { generateSecret } from "../../../utils";
    import { prisma } from "../../../../generated/prisma-client";
    
    export default {
      Mutation: {
        requestSecret: async (_, args) => {
          const { email } = args;
          const loginSecret = generateSecret();
          try {
            await prisma.updateUser({ data: { loginSecret }, where: { email } });
            return true;
          } catch (error) {
            console.log(error);
            return false;
          }
        }
      }
    };
    

     

    - 로컬호스트:4000

    // 유저 생성후 ( email를 실제로 존재해야함)
    mutation{
      createAccount(username:"정백구" , email:"wndtlr1024@gmail.com"){
        id
      }
    }
    
    
    
    // email과 일치하는 유저를 찾아 loginSecret를 작성해준다.
    mutation{
      requestSecret(email:"wndtlr1024@gmail.com")
    }

    - 전체적인 폴더 구조

    - 정리: 시크릿 코드를 유저에게 전송

    댓글

Designed by Tistory.