[GraphQL] GraphQL 개발 이슈
by 한만섭
- 1. query의 argument를 정하는 방법
- 2. resolver에서 query 선언하기
- 3. filter를 하면 배열 형태로 나오기 때문에 하나를 원하면 [0]해야함.
- 4. 포트 4000번 중복 이슈
- 포트 죽이는 방법
1. query의 argument를 정하는 방법
{
person(id:3){
name
}
}
위와 같이 person에 id라는 인자를 주고 싶다면 직접 어떤 argument인지 정해줘야 한다.
2. resolver에서 query 선언하기
person : (_,{id}) => getById(id)
위와 같이 첫번째 인자는 아직 사용하지 않기 떄문에 자세히 잘 모르기 때문에 _
로 사용하고, 두번째에 인자를 적어넣는다. {id} == args.id
3. filter를 하면 배열 형태로 나오기 때문에 하나를 원하면 [0]해야함.
```
export const getById = (id) => {
const filteredmovies = movies.filter(movie => movie.id === id);
// console.log(filteredpeople );
return filteredmovies[0];
}
```
4. 포트 4000번 중복 이슈
server를 시작하려하는데 자꾸 에러가 발생해서 자꾸 내 코드를 의심했던 에러…. 내 지식에 대한 확신이 없는건 더 큰 화를 부른다는 좋은 예시. 개념을 잘 잡고 공부해야 실수도 적고 실수했을 때 어떤 부분일지 예상이 쉽게 되는 것 같다.
아래와 같은 에러가 발생하면 포트를 죽였을 때 될 가능성이 높다!
> movie-graphql@1.0.0 start C:\Users\mshan\Desktop\react-workspace\movie-graphql
> nodemon --exec babel-node index.js
[nodemon] 1.19.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `babel-node index.js`
events.js:177
throw er; // Unhandled 'error' event
^
Error: listen EADDRINUSE: address already in use :::4000
at Server.setupListenHandle [as _listen2] (net.js:1226:14)
at listenInCluster (net.js:1274:12)
at Server.listen (net.js:1362:7)
at C:\Users\mshan\Desktop\react-workspace\movie-graphql\node_modules\graphql-yoga\src\index.ts:388:22
at new Promise (<anonymous>)
at GraphQLServer.start (C:\Users\mshan\Desktop\react-workspace\movie-graphql\node_modules\graphql-yoga\src\index.ts:386:12)
at Object.<anonymous> (C:/Users/mshan/Desktop/react-workspace/movie-graphql/index.js:8:8)
at Module._compile (internal/modules/cjs/loader.js:774:30)
at loader (C:\Users\mshan\Desktop\react-workspace\movie-graphql\node_modules\babel-register\lib\node.js:144:5)
at Object.require.extensions.<computed> [as .js] (C:\Users\mshan\Desktop\react-workspace\movie-graphql\node_modules\babel-register\lib\node.js:154:7)
Emitted 'error' event at:
at Server.emit (events.js:200:13)
at Server.EventEmitter.emit (domain.js:471:20)
at emitErrorNT (net.js:1253:8)
at processTicksAndRejections (internal/process/task_queues.js:84:9) {
code: 'EADDRINUSE',
errno: 'EADDRINUSE',
syscall: 'listen',
address: '::',
port: 4000
}
[nodemon] app crashed - waiting for file changes before starting...
포트 죽이는 방법
- 포트번호확인하기
netstat -a -o
나온 결과에서 사용중이라는 포트번호에 속하는 PID값을 아래의 command에 입력하면
taskkill /f /pid [PIDNUMBER]
Subscribe via RSS