인스타그램 클론(backend setting)

wj·2023년 6월 9일
0

사용 스택 정리

  • babel

  • apollo server

  • prisma schema: 1) typeDefs, 2) resolvers

  • prisma client:
    다양한 data를 찾아야할 때 => findMany();

  • prisma studio

  • prisma migrate: 작성된 schema.prisma를 파악해서 데이터베이스에 적용
    prisma migrate는 client를 자체 생성하지 않음, 하지만 npx prisma migrate dev --preview-feature 명령어 사용 시 client 자체 생성
    (client폴더는 node.modules 안에 생성)

  • clietn.js에서 프리즈마 클라이언트 import 후 초기화 시키고 export default => 데이터베이스 사용 시 client 필수 호출
    (mutations, queries에서 client 호출)

import {
    PrismaClient
} from "@prisma/client";

const client = new PrismaClient()

export default client;

prisma schema, gql schema, mutations, queries 만드는 방식에 익숙해지기

  • graphQL

resolver 안의 쿼리에서 다양한 data를 찾아야할 때 => findMany();

prisma는 데이터 입력을 받을 때 required가 디폴트고 필수가 아닐 경우 ?옵셔널 체이닝 적용, graphQL은 모든 사항이 optional이고 required의 경우 !표기 (두가지가 반대인 걸 기억)

서버의 typeDefs와 schema를 일치시키는 것 중요

  • npx prisma init -> schema.prisma 파일 생성(datasource, generator), 그 다음 model 만들기
  • datasouce = prisma가 어떻게 데이터베이스에 연결되는지
    (provider, url 존재) .env 파일 읽을 수 있음
  • generator =
generator client {
  provider = "prisma-client-js"
}
datasource db {
  provider = "postgresql"
  url      = env("DATABASE_URL")
}
// prisma 사용하려면 model 필수 작성, 
필수 사항이 아닌 데이터의 경우 ?표기(gql이랑 반대)
model Movie {
  id Int @id @default(autoincrement())
  title String
  year Int
  genre String?
  createdAt DateTime @default(now())
  updatedAt DateTime @updatedAt
}

domain별로 분류

  • movies, users, photo, comments 등등
  • 각각 typeDefs, resolvers(queries, mutations) 만들어줌
    일반적으로 typeDefs 먼저 만들고 -> queries, mutations에서 활용
    ex) movies.mutations.js, movies.typeDefs.js 등등
  • schema.js에서 각 typeDefs, queries, mutations를 찾아줌
    const schema로 makeExecutableSchema 스키마({ typeDefs, resolvers }) 만들어 준 다음 export default 해주고,
    server.js에서 import해주기
  • export default 필수!

//loadfilesync 후 merge
const loadedTypes = loadFilesSync(${__dirname}/**/*.typeDefs.js);
//pattern language (glob)
const loadedResolvers = loadFilesSync(${__dirname}/**/*.{queries, mutations}.js);


terminal

  • cls 입력 시 터미널 초기화

  • LF will be replaced by CRLF the next time Git touches it 에러 시, $git config core.autocrlf true 입력 (해당 프로젝트에만 적용)

  • mkdir 폴더명 //디렉토리(폴더) 생성

  • cd 이동경로 //이동경로로 디렉토리 이동

  • cd .. //현재 폴더의 상위폴더로 이동

  • touch 파일명.확장자 //파일 생성 //ex) touch newfile.html

  • ls //폴더 내에 있는 파일들 출력

  • code . //코드에디터 실행(VS code) // .은 코드에디터에서 현재 위치의 폴더를 열겠다는 의미 //코드에디터마다 명령어는 다름

- graphQl 패턴 활용법
graphql-tools 업데이트로 각각 따로 설치
npm install @graphql-tools/schema @graphql-tools/load-files @graphql-tools/merge
import { makeExecutableSchema } from '@graphql-tools/schema'
import { loadFilesSync } from '@graphql-tools/load-files'
import { mergeResolvers, mergeTypeDefs } from '@graphql-tools/merge'

dotenv 설치

dotenv 설치하면 process.env에 접근 가능

profile
tistory로 옮겼습니다

0개의 댓글