inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드캠프] 부트캠프에서 만든 고농축 백엔드 코스

find가 빈 값을 반환하는 문제

해결된 질문

216

Haewoong Lee

작성한 질문수 12

0

안녕하세요~

프로젝트 만들다보니 질문거리가 많아지네요.

@Query(() => [Dibs])
    fetchDibs(
        @Args('findDibsInput') findDibsInput: FindDibsInput,
    ): Promise<Dibs[]> {
        return this.dibsService.find(findDibsInput);
    }
async find(findDibsInput: FindDibsInput): Promise<Dibs[]> {
        const { campgroundId, memberId } = findDibsInput;
        const result = await this.dibsRepository.find({
            where: {
                campground: { campgroundId },
                member: { memberId },
            },
        });

        return result;
    }

위 코드에 아래와 같은 graphQL 요청을 하면 아무런 값도 돌아오지 않습니다.

query {
  fetchDibs(
    findDibsInput: {
      campgroundId: "845b4bac-e0d9-4d1e-a897-9859275e9948"
      memberId: "lhw3542"
    }
  ) {
    
    campground{
      campgroundId
      campName
    }
    member {
      memberId
    }
  }
}
{
  "data": {
    "fetchDibs": []
  }
}

조건식 인식 자체가 제대로 되지 않고 있는거 같은데 또 오류는 안나오네요.

어떤 것이 문제일까요?

javascript node.js express docker tdd rest-api nestjs

답변 1

1

노원두

안녕하세요! Haewoong님!

올려주신 코드를 보면 dibs 테이블에서 campgroundId, memberId 두 컬럼이 findDibsInput에 들어있는 값과 일치하는 행을 조회하는 로직인 것 같아요!

        const { campgroundId, memberId } = findDibsInput;
        const result = await this.dibsRepository.find({
            where: {
                campground: { campgroundId },
                member: { memberId },
            },
        });

        return result;

먼저, 위 로직은 두 조건이 AND인 상태이므로, campgroundId, memberId 둘 모두가 일치해야 해요!
또한, 두 컬럼이 조건에 맞는 행을 dibs 테이블에서만 조회한답니다.
주의하실 점이, campground, member 테이블안의 컬럼들은 조회하지 않아요.
만약, dibs 테이블의 컬럼들 뿐만 아니라, campground 테이블, member 테이블의 컬럼들도 조회를 하길 원하신다면, relations: ["campground", "member"] 옵션을 추가해 주셔야 한답니다!

 

하지만, 올려주신 코드에서는 playground에서 찾으시는 내용이 campground 테이블의 campgroundId, campName 두개의 컬럼member 테이블의 memberId 컬럼임을 확인할 수 있네요!

query {
  fetchDibs(
    findDibsInput: {
      campgroundId: "845b4bac-e0d9-4d1e-a897-9859275e9948"
      memberId: "lhw3542"
    }
  ) {
    
    campground{
      campgroundId
      campName
    }
    member {
      memberId
    }
  }
}

 

따라서, 현재는 campground 테이블, member 테이블의 컬럼들도 조회가 필요한 상황이므로, relations: ["campground", "member"] 옵션을 아래와 같이 추가해 주시면 좋을 것 같아요!

        const { campgroundId, memberId } = findDibsInput;
        const result = await this.dibsRepository.find({
            where: {
                campground: { campgroundId },
                member: { memberId },
            },
            relations: ["campground", "member"]
        });

        return result;

1

Haewoong Lee

해결됐습니다. 감사합니다~

그래프 ql 문서 사용할때 느낌표 남는거 어떻게 없애나요?

0

86

2

강의 전체 소스 코드를 받고싶습니다.

0

77

2

fontawesome 사용 문의

0

80

2

소스 코드 부탁드립니다~

0

87

2

깃 레포지터리 소스

0

87

2

커리큘럼12.css 정렬 에 나오는 과제 정답알고싶어요

0

74

2

10-01 Entity TypeOrmModule.forRoot 에 entities

0

89

3

강의 버전관련 문의입니다

0

104

2

Ubuntu 설치 관련

0

62

1

schema.gql 질문 드립니다.

0

51

1

서버 재실행시 Many to Many

0

102

3

input 관련 문의

0

90

2

Rest API 보다는 graphql이 주된 내용인데

0

134

2

강의 전체 소스코드 받을수있을까요?

0

156

1

도커볼륨 마운트 관련

0

127

2

findOne 타입스크립트오류

0

109

1

http => htrtps 호출 인증서 신뢰 오류

0

356

1

self-signed certificate in certificate chain 에러 발생

0

421

1

mongoose 설치 오류

0

143

1

특정 API, 특정 IP 허용 (단일경로에 CORS 활성화)

0

285

2

08-06

0

180

3

구조랑 패턴 관련해서 질문

0

126

2

mydocker

0

129

2

coolsms statuscode 2000 인데 전송안돼는 경우 확인.

0

156

1