본문 바로가기
First step/web depeloper step1

node ts / nexus-prisma 프로젝트 다시보기용

by Joshua21 2022. 1. 17.

npm init -y 하면 제목등을 정하지 않고 기본값으로 만들어짐

npm install -D typescript ts-node ts-node-dev @types/node를 설치함 

npm install express apollo-server-express

npm install nexus-prisma nexus-plugin-prisma --force 

npx gitignore node

 

타입스크립트 설정 파일을 만듬

npx tsc --init

tsconfig.json 파일이 생성되고 안에 설정중에 rootDir, baseUrl: "./src", 로 수정 outDir : "./dist"

rootDir에서만 TS를 동작시킬 것임을 나타내고 baseUrl은 어디서부터 시작인지 알려줌 

 

src폴더 아래 index.ts 만들고

pakage.json 안에 "scripts" : {"dev": "ts-node-dev ./src/index.ts"} 추가해서 엔트리를 정해줌 

 

graphql은 typeDef 와 resolver

 

 

 

 

nexus는 여러가지 타입을 가지고있다. querytyoe, mutationtype, objectype,inputobjecttype 등등

const query = qeuryType({

  definition: function ( t ) {

    t.field("user", {

      type: "User",resolve(root,args,ctx){

        retunr {  }

}

})

}

}) 

위와 같은 코드를 모던 자바스크립트에서 사용하듯이 사용하면

const query = qeuryType({

  definition( t ) {

    t.field("user", {

처럼 단순화해 표현할수 있다.

 

위의 식에서 definition 은 queryType 안의 옵션이다. definition이 필요할떄  t를 파라미터로 받는 function(익명함수)를 실행해서 결과를 얻게 됨

 

nexus-plugin-prisma --force 

nexus-plugin-prisma가 개발이 끝나지 않은 프리뷰단계이고 프로덕션 단계에서는 사용을 권장하지 않음에도 강제로 설치까지 하며 사용 하려는 이유는 crud 모델을 만들때 각각의 타입을 수동으로 전부 만들어 줘야하는데 굉장히 많은 양을 만들어야 하기때문이다. (query , mutation,boolean,postcreateinput등을 포함 더많은 타입이 있음) 관계가 더 복잡해질수록, 더많은 모델을 만들수록 더많은 종류의 타입을 만들어야 함

 

context(클로져)안에 프리즈마가 담겨있고 프리즈마를 실행해서 context에 담아둔 원하는 값을 가져옴

따라서 요청이 올때마다 클라이언트를 실행하는게 아닌 서버를 실행했을때 컨텍스트함수가 계속 클로져 형태로 프리즈마를 담고있는 상태(스코프)

 

 

 

'First step > web depeloper step1' 카테고리의 다른 글

무엇을 사용했는가 /APOLLO  (0) 2022.01.19
$ 표시가 무었인가요..  (0) 2022.01.10
graphQL  (0) 2022.01.08
Docker-compose  (0) 2022.01.07
[인턴 1일차]좌충우돌 용어정리  (0) 2021.12.29