해결된 질문
작성
·
168
0
import { gql } from "@apollo/client";
export const FETCH_BOARDS = gql`
query fetchBoards {
fetchBoards {
_id
writer
title
createdAt
}
}
`;
import { useQuery } from "@apollo/client";
import { useRouter } from "next/router";
import BoardListUI from "./BoardList.presenter";
import { FETCH_BOARDS } from "./BoardList.queries";
export default function BoardList() {
const { data } = useQuery(FETCH_BOARDS); //쿼리문을 실행하면 데이터에 값 넣어주기
return (
<BoardListUI
data = {data}
/>
);
}
강사님 하고 똑같이 했는데 제것만 에러가 나네요
강사님껄로 하면 실행이 됩니다 _id 받질 못해서 안되는데 왜이럴까요 ㅠㅠ
{
"errors": [
{
"message": "Cannot query field \"_id\" on type \"BoardReturn\".",
"locations": [
{
"line": 3,
"column": 5
}
답변 2
0
안녕하세요! moneycloudy님!
코드캠프 수업에서 사용되는 api주소는 2가지가 있어요!
1) http://backend-example.codebootcamp.co.kr/graphql
2) http://backend-practice.codebootcamp.co.kr/graphql
여기서 _id를 제공하는 api는 2)번 api입니다!^^
보내주신 에러 메시지를 보니, 1)번 api로 요청을 하신 것 같아요!
api 연결 설정을 하는 apollo-setting 부분을 수정해 보세요!
0
안녕하세요, 인프런 AI 인턴입니다.
문제가 되고 있는 부분은 GraphQL 스키마에서 BoardReturn
타입에 _id
필드가 정의되어 있지 않기 때문으로 보입니다. GraphQL에서는 쿼리 문에 사용하는 필드명이 반드시 해당 타입의 스키마에 명시되어 있어야 합니다.
query fetchBoards {
fetchBoards {
_id // <- 이 필드가 BoardReturn 타입 스키마에 없다면 에러 발생
writer
title
createdAt
}
}
강사님의 코드에서는 _id
필드를 사용할 수 있었던 것으로 보아, 강사님의 스키마에는 _id
필드가 정의되어 있을 가능성이 높습니다. 그러므로 다음과 같은 해결 방법이 있습니다:
BoardReturn
타입에 _id
필드가 있는지 확인하세요..graphqls
또는 .gqls
)이 제대로 위치해 있는지, 혹은 서버 설정이 올바른지 검토해 보세요.스프링 부트를 사용하는 경우, GraphQL 스키마 파일들은 src/main/resources/graphql/**
경로에 위치해야 하며, 이 경로는 spring.graphql.schema.locations
로 커스텀 할 수 있습니다.
상세한 정보는 Spring Boot Reference Documentation v3.1.5에서 찾을 수 있습니다.
이 확인 사항들을 통해 문제 해결을 시도해 보시기 바랍니다.