찾다

 >  Q&A  >  본문

사용자가 로그인한 경우 해당 사용자에 대한 총 값을 반환합니다.

제목에서 알 수 있듯이 사용자가 로그인했을 때 사용자로부터 특정 데이터를 얻어서 모든 데이터를 집계한 다음 집계된 데이터를 반환하려고 합니다. $match 기능을 사용해 보았지만 운이 없었습니다. 실망스러운 점은 개체 배열의 모든 데이터를 성공적으로 반환할 수 있다는 것입니다. 보다 구체적으로 다음 코드는 성공적으로 실행되고 객체 배열을 반환합니다.

으아악

하지만 이 코드는 그렇지 않습니다. 빈 배열을 반환합니다.

으아악

왜 이런 일이 발생하는지 모르겠습니다. 반환해야 하는 것은 집계된 모든 데이터로 채워진 객체가 있는 배열입니다.

제거하면 $match 실행 중인 컬렉션의 모든 데이터가 성공적으로 집계된다는 것도 알고 있으므로 그와 관련이 있다고 생각합니다.

관련 코드는 모두 다음과 같습니다.

const runs = await Run.find({ user: req.user.id })

P粉470645222P粉470645222280일 전622

모든 응답(1)나는 대답할 것이다

  • P粉722409996

    P粉7224099962024-03-23 10:52:36

    그래서 rickhg12hs의 도움으로 우리는 문자열을 ObjectId와 비교하려고 했으나 작동하지 않는다는 것을 {match: { user : req.user.id } } 확인할 수 있었습니다. 제가 설정한 API가 사용자 ID를 ObjectID가 아닌 문자열로 반환하기 때문입니다. 올바른 값 유형(이 경우 ObjectID)을 비교하고 있는지 확인하려면 다음을 수행하세요.

    으아아아

    반환된 문자열을 가져와 새 ObjectID로 변환하고 이제 ObjectID를 비교하므로 작동합니다.

    분명히 문서에 있었는데, 자세히 살펴보지 못했을 뿐입니다

    회신하다
    0
  • 취소회신하다