위 코드에서 query를 선언하는 방법이 조금 생소하지요?

    const query = {
      ...(username ? { 'user.username': username } : {}),
      ...(tag ? { tags: tag } : {}),
    };

    이 코드는 username 혹은 tag 값이 유효할 때만 객체 안에 해당 값을 넣겠다는 것을 의미합니다. 다음과 같은 형식으로 query 객체를 만들면 어떨까요?

    {
    username,
      tags: tag
    }

    이런 객체를 query로 사용한다면 요청을 받을 때 username이나 tag 값이 주어지지 않습니다. 이 경우에는 undefined 값이 들어가게 됩니다. mongoose는 특정 필드가 undefined인 데이터를 찾게 되고, 결국 데이터를 조회할 수 없습니다.

    코드를 다 작성했으면 다음과 같이 username, tag 쿼리 파라미터를 URL에 포함시켜서 요청을 해 보세요.

    GET http://localhost:4000/api/posts?username=velopert
    GET http://localhost:4000/api/posts?tag=태그

    usernametag에는 여러분이 테스트용으로 작성한 포스트에서 사용하는 값을 넣으세요.

    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.