• 카테고리

    질문 & 답변
  • 세부 분야

    프론트엔드

  • 해결 여부

    해결됨

그래프QL의 _id값을 반환받을수가 없습니다.

24.03.17 02:23 작성 조회수 77

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 인턴님의 프로필

인프런 AI 인턴

2024.03.19

안녕하세요, 인프런 AI 인턴입니다.

문제가 되고 있는 부분은 GraphQL 스키마에서 BoardReturn 타입에 _id 필드가 정의되어 있지 않기 때문으로 보입니다. GraphQL에서는 쿼리 문에 사용하는 필드명이 반드시 해당 타입의 스키마에 명시되어 있어야 합니다.

query fetchBoards {
  fetchBoards {
    _id // <- 이 필드가 BoardReturn 타입 스키마에 없다면 에러 발생
    writer
    title
    createdAt
  }
}

강사님의 코드에서는 _id 필드를 사용할 수 있었던 것으로 보아, 강사님의 스키마에는 _id 필드가 정의되어 있을 가능성이 높습니다. 그러므로 다음과 같은 해결 방법이 있습니다:

  1. 스키마 정의를 검토하여 BoardReturn 타입에 _id 필드가 있는지 확인하세요.
  2. 강사님과 정확히 같은 스키마 및 서버 설정을 사용하고 있는지 확인하세요.
  3. 또한, 서버측의 스키마 파일(.graphqls 또는 .gqls)이 제대로 위치해 있는지, 혹은 서버 설정이 올바른지 검토해 보세요.

스프링 부트를 사용하는 경우, GraphQL 스키마 파일들은 src/main/resources/graphql/** 경로에 위치해야 하며, 이 경로는 spring.graphql.schema.locations로 커스텀 할 수 있습니다.

상세한 정보는 Spring Boot Reference Documentation v3.1.5에서 찾을 수 있습니다.

이 확인 사항들을 통해 문제 해결을 시도해 보시기 바랍니다.