인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

코린이님의 프로필 이미지
코린이

작성한 질문수

Flutter로 SNS 앱 만들기

접속 중인 사용자가 작성한 게시글 목록 가져오기

직접 null일 경우를 작성한 경우

해결된 질문

작성

·

238

0

1704287957407.png이렇게 직접적으로 null인 경우의 로직을 작성해주니깐 작동이 되긴 한데, Moo님처럼 그냥 isEqualTo만 사용해서는 여전히 안 되네요. 해결은 했지만 원인이 궁금합니다..!

답변 1

0

DEV MOO님의 프로필 이미지
DEV MOO
지식공유자

안녕하세요.

확인 결과, firebase 패키지의 버전이 업데이트 되면서 발생한 문제였습니다.
(제가 강의에서 사용한 firebase 패키지 버전은 아래와 같습니다)

firebase_core: 2.15.0
firebase_auth: 4.7.2
firebase_storage: 11.2.5
cloud_firestore: 4.8.4


기존 방법에서는 where('uid', isEqualToL: uid) 에서 변수 uid 에 null 이 대입되어 있으면
where 함수를 사용하지 않은 것과 동일한 동작을 해서 모든 유저의 피드를 가져올 수 있었는데
firebase 패키지가 업데이트 되면서 변수 uid 에 null 이 대입되면
feeds 컬렉션에서 정말로 uid 필드값이 null 인 게시글을 검색하다보니 아무 결과가 출력되지 않았습니다.

 

해결 방법으로는 이미 작성하신 코드를 사용하셔도 되고, 작성하신 코드에서 반복되는 부분을 줄여서
아래 같이 작성할 수도 있습니다.

  Future<List<FeedModel>> getFeedList({
    String? uid,
  }) async {
    try {
      // 전체 피드 검색
      Query<Map<String, dynamic>> query = await firebaseFirestore
          .collection('feeds')
          //.where('uid',  isEqualTo: uid) // firebase 업데이트로 인해 사용 불가
          .orderBy('createAt', descending: true)
          .limit(feedLength);

      // uid 가 null 이 아닐 경우(특정 유저의 피드를 가져올 경우) 조건 추가
      if (uid != null) {
        query = query.where('uid', isEqualTo: uid);
      }
코린이님의 프로필 이미지
코린이
질문자

제가 패키지를 사용할 때 터미널에서 flutter pub add 명령어를 사용해서 최신버전을 사용한 결과이군요..!

답변 감사드립니다!

코린이님의 프로필 이미지
코린이

작성한 질문수

질문하기