브렌쏭의 Veritas_Garage

나는 나는 무얼 놓쳤나 #20220411 본문

[Project_만들다]/[Project_문제해결]

나는 나는 무얼 놓쳤나 #20220411

브렌쏭 2022. 4. 12. 14:22
유저 테이블을 잘 구성해주셨습니다! 다만, user를 find하는 api의 엔드포인트가 잘못 지정되어 있습니다! api의 엔드포인트는 항상 주의해주시길 바랍니다~! 또한, user를 delete하는 api의 경우 현재 resolver에서 리턴값으로 user 객체를 보내주고 있는데 삭제된 데이터의 값을 보내줄 수는 없겠죠? softDelete를 사용했을 때와 같이 return 값을 다르게 지정해주어야 에러가 발생하지 않을 것 같습니다! service 부분에서는 return 값으로 result.affected를 보내주고 있으나, result라는 객체는 softDelete된 객체가 아니기에 null이 리턴되고 있습니다! 해당 부분도 반드시 확인 후 해결 방법을 숙지하시길 바랍니다! 고생하셨습니다~!
  1. user를 find하는 api의 엔드포인트가 잘못 지정되어 있습니다! api의 엔드포인트는 항상 주의해주시길 바랍니다
  2. user를 delete하는 api의 경우 현재 resolver에서 리턴값으로 user 객체를 보내주고 있는데 삭제된 데이터의 값을 보내줄 수는 없죠
    softDelete를 사용했을 때와 같이 return 값을 다르게 지정해주어야 에러가 발생하지 않을 것 같습니다
  3. service 부분에서는 return 값으로 result.affected를 보내주고 있으나, result라는 객체는 softDelete된 객체가 아니기에 null이 리턴되고 있습니다

1. 실수 만발

user 대신에 복붙하다가 카테고리라는 이름이 떡하니 박혀있었다. 으악 젠장


2, 3. 고민 중

둘 다 비슷한 맥락의 문제인거 같다. 리턴값을 지정해줘야할 것 같다. 근데 어떻게 지정할까?

@UseGuards(GqlAuthEmailGuard)
@Mutation(() => User)
async deleteUser(@ContextUser() contextUser: any) {
    const email = contextUser.email;
    await this.userService.delete({
        email,
    });
    const result = 'Deleted...';
    return result;
}

직접 리턴 값을 문자열로 바꿔봤으나 딱히 소용은 없었다.

해결

@UseGuards(GqlAuthEmailGuard)
@Mutation(() => String)  // 여기에서 리턴되어 프론트로 보내줄 값의 형식을 지정해줘야한다
async deleteUser(@ContextUser() contextUser: any) {
    const email = contextUser.email;
    await this.userService.delete({
        email,
    });
    const result = 'Deleted...';
    return result;
}

 

Comments