• 카테고리

    질문 & 답변
  • 세부 분야

    모바일 앱 개발

  • 해결 여부

    미해결

.where 사용법

20.09.18 03:02 작성 조회수 87

0

안녕하세요!  강사님 강의 모두 구매하여 유익하게 정말 잘듣고있습니다 강의 복습하며 듣다 질문이 생겨 질문드립니다. 

1. where문 안에 조건을 두개 달 수 있는지 궁금합니다 

return Firestore.instance.collection('postProduct').where("name", isEqualTo: "김진명" || "이수한").snapshots();
// 오류

이렇게 인스턴스에서 where문에서 조건을 달때 두가지 조건(or또는 and)을 달 수 있는 방법이 있는지 궁금합니다.

예를들어 이름이 김진명이거나 이수환(or)인 document를 fireStore에서 가져오고싶을때 

2. 인스턴스를 합치는 방법에 대해 궁금합니다.

var aa = Firestore.instance.collection('postProduct').orderBy('Date',descending: false).snapshots();
var bb = Firestore.instance.collection('postPrduct').orderBy('Date',descending: true).snapshots();
aa + = bb; // 오류
aa.addAll(bb); // 오류

3. 인스턴스를 firestore에서 가져올때 순서를 랜덤하게 섞을 수 있는 메소드가 있는지 궁금합니다. 

var bb = Firestore.instance.collection('postPrduct').orderBy(random??).snapshots();

구글링하다 관련된 정보를  못찾아 이렇게 질문 남깁니다. 감사합니다!!

답변 2

·

답변을 작성해보세요.

0

아 위 답변 1. 은 and 연산이었습니다.

or 연산의 경우 https://cloud.google.com/firestore/docs/query-data/queries?hl=ko#in_and_array-contains-any 에서 소개하는 in 이나 array-contains-any 를 사용해야 할 것 같습니다.

flutter에서는 어떤 코드일지는 저도 아직 안 해 봤네요. web이나 java 코드를 참고하면 비슷한 문법이 있을 것 같습니다.

0

Firestore 문서를 뒤져봐도 Flutter로는 나오지 않아서 답답한 부분이 있습니다.
공식 문서의 웹을 기준으로 참고하시면서 적용하시면 될 듯 합니다.

https://firebase.google.com/docs/firestore/query-data/queries?hl=ko#compound_queries

1. where를 연속으로 사용하면 됩니다.

.where("name", isEqualTo: "김진명").where("name", isEqualTo: "이수환")

2. Firestore 결과인 snapshot 객체를 합칠 수는 없습니다. 각 스냅샷을 List 에 담은 후에 합치셔야 할 것 같습니다.

3. 없습니다. 가지고 온 후에 List 에 담은 후에 섞으셔야 할 것 같습니다.