본문 바로가기
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에서 데이터를 검색하고 처리하는 데 필요한 기능을 원활하게 수행할 수 있습니다.