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 만드는 방식에 익숙해지기
resolver 안의 쿼리에서 다양한 data를 찾아야할 때 => findMany();
prisma는 데이터 입력을 받을 때 required가 디폴트고 필수가 아닐 경우 ?옵셔널 체이닝 적용, graphQL은 모든 사항이 optional이고 required의 경우 !표기 (두가지가 반대인 걸 기억)
서버의 typeDefs와 schema를 일치시키는 것 중요
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 }
//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 설치하면 process.env에 접근 가능