개발자
파이어베이스 에서 wherfield를 통해 orderby 와 limit 으로 pagination 기능을 구현하였습니다. wherefield 안에 in 을 통하여 팔로잉 한 상대만 볼 수 있게 구현중에 있는데 배열안에 30개가 넘어가니 작동하지 않더군요.. 모두 불러와서 로직 상에서 구별하는 방법 말고 방법이 있을까요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 05월 13일
Firebase의 Query API는 'in' 조건 클로즈에 10개 이상의 항목을 지원하지 않습니다. `whereField("field", in: array)` 메소드를 사용할 때, 이 array의 크기는 최대 10개로 제한됩니다. 이 제한을 우회하기 위한 일반적인 방법 중 하나는 클라이언트 쪽에서 여러 개의 비동기 쿼리를 실행하고, 그 결과를 결합하는 것입니다. 팔로잉 목록을 청크(chunk)로 분할하고 각 청크에 대해 별도의 쿼리를 실행하면 됩니다. 그런 다음 각 쿼리의 결과를 합쳐서 전체 결과 집합을 얻을 수 있습니다. 그러나 이 방법은 여러 가지 단점이 있습니다: 1) 쿼리가 동시에 더 많은 리소스(네트워크, 메모리 등)를 사용합니다. 2) 페이지네이션과 정렬 로직이 더 복잡해질 수 있습니다. 3) 서버가 요청한 순서와 다른 순서로 응답을 반환할 수 있습니다. 따라서, 가능한 경우 'in' 조건자를 피하고 다른 방식으로 데이터를 modeling하여 성능과 유연성을 높일 수 있게 설계하는 것이 좋습니다. 예를 들어 팔로우/팔로워 관계를 문서로 만들거나, 모든 게시물에 대한 사용자의 팔로잉 목록을 유지하는 것 등이 있습니다. 이렇게 하면 더 효율적인 쿼리와 스케일링을 달성할 수 있습니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!