본문 바로가기
Flutter

Firebase Firestore에서 'in' 연산자를 사용할 때 발생하는 오류 해결하기

by 난타코다옹 2023. 10. 17.

목차

    오류 메시지: Firestore error message: Operator string 'in' is invalid. Valid choices are: <, <=, ==, >, >=, array_contains.

    원인: Firestore에서 'in' 연산자를 사용할 때, 해당 연산자를 지원하지 않아서 오류가 발생합니다. 이러한 연산자는 '<', '<=', '==', '>', '>=', 'array_contains'와 같은 다른 연산자로 대체되어야 합니다.

    해결: 'in' 연산자를 사용하는 코드를 다음과 같이 수정해야 합니다:

    groups = ['AG', 'PA']
    
    docs = db.collection(u'companies').document(company).collection('counts').\
    document(count_name).collection('preprocess').\
    where('status', '==', 'done').where('statuslayers', '==', 'done').\
    where('statuslive', '==', 'created').\
    where('load', '==', False).where('group', 'in', [groups]).\
    order_by(u'area').stream()
    
    for doc in docs:
        print(u'{} => {}'.format(doc.id, doc.to_dict()))

    위 코드에서는 'in' 연산자 대신에 '[groups]'와 같은 리스트를 사용하여 해당 필드가 리스트에 포함되어 있는지 확인합니다. 이 방법으로 'in' 연산자를 대체할 수 있습니다.

    분석: 이 문제는 Firebase Firestore에서 'in' 연산자를 지원하지 않기 때문에 발생합니다. 이러한 경우에는 대체 가능한 다른 연산자를 사용해야 합니다. 'in' 연산자를 대체하기 위해서는 해당 필드가 리스트에 포함되어 있는지 확인하는 방법을 사용할 수 있습니다.

    결론: Firebase Firestore에서 'in' 연산자를 사용할 때 발생하는 오류는 대체 가능한 다른 연산자를 사용하여 해결할 수 있습니다. 이러한 연산자를 대체하기 위해서는 해당 필드가 리스트에 포함되어 있는지 확인하는 방법을 사용할 수 있습니다. 이를 통해 Firebase Firestore에서 데이터를 검색하고 처리하는 데 필요한 기능을 원활하게 수행할 수 있습니다.