해결된 질문
작성
·
170
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": []
}
}
조건식 인식 자체가 제대로 되지 않고 있는거 같은데 또 오류는 안나오네요.
어떤 것이 문제일까요?
답변 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;
해결됐습니다. 감사합니다~