👩💻 Programming/ERROR
GraphQL 뮤테이션 에러: 'Variable not provided' 에러
김_수댕
2024. 10. 17. 19:52
문제 상황
그래프 큐엘을 사용해서 데이터를 불러오는데 자꾸 속성을 찾을 수 없다는 에러가 발생했다.
"Variable "$createBoardInput" of required type "CreateBoardInput!" was not provided."
youtubeUrl 속성 추가와 동시에 graphql에서 mutation 호출 시 사용하는 createBoardInput 객체로 변경해주었다.
그랬는데 잘 동작하던 코드가 갑자기 위와 같은 에러가 발생했다.
원본 query.ts
// 게시글 생성하기
export const CREATE_BOARD = gql`
mutation createBoard($writer: String, $password: String, $title: String!, $contents: String!) {
createBoard(createBoardInput: { writer: $writer, password: $password, title: $title, contents: $contents }) {
_id
writer
title
contents
likeCount
dislikeCount
}
}
`;
원본 hook.ts
if (isVaild && owner && password && title && content) {
const result = await createBoard({
variables: {
writer: owner,
password: password,
title: title,
contents: content,
},
}
);
여러가지 방법을 찾아보고, graphiql도 들어가서 테스트해 본 결과 아래와 같이 바꾸니 정상적으로 동작했다.
변경한 query.ts
// 게시글 생성하기
export const CREATE_BOARD = gql`
mutation createBoard($createBoardInput: CreateBoardInput!) {
createBoard(createBoardInput: $createBoardInput) {
_id
writer
title
contents
youtubeUrl
likeCount
dislikeCount
createdAt
}
}
`;
변경한 hook.ts
if (isVaild && writer && password && title && content) {
const result = await createBoard({
variables: {
createBoardInput: {
writer: writer,
password: password,
title: title,
contents: content,
youtubeUrl: youtubeUrl,
},
},
}
);
예상 문제 원인
1. 그래프큐엘에 정의된 값들을 정확하게 따르지 않고 2. 객체를 넣어주는데 막상 hook에서 객체로 넣어주지 않았다는 것. 이게 문제가 된 것 같다.
실은 아래와 같이 작성했었는데, 지금 생각하니 코드에 대한 이해 없이 작성한 코드라는 걸 알고 조금 부끄러워졌다,
if (isVaild && writer && password && title && content) {
const result = await createBoard({
createBoardInput: {
variables: {
writer: writer,
password: password,
title: title,
contents: content,
youtubeUrl: youtubeUrl,
},
},
}
);
여기서 변수로 감싼 영역 밖에 변수 이름이 들어간 것은 이해 부족으로 인해 발생한 문제였다...