公司的FireStore。如何根据用户条件创建查询

时间:2018-01-30 10:53:25

标签: google-cloud-firestore

我想创建查询。我正在使用FirestoreRecyclerAdapter。初始化适配器我收到错误:

  

FAILED_PRECONDITION:查询需要索引。

如果我的情况下eventId是动态值,我如何创建索引?

我确信这是基本的事情,因为我按照手册做了所有事情。正如我在文档中看到的那样,在我的案例中,数据集应该在事件和用户中都有交叉密钥集,即{dataId,true}。请帮我解决问题的方法。

     Query query = mFirebaseFirestore.collection(EVENT_INFO).document(eventId)
                .collection(USERS)
                .whereEqualTo(FIELD_AGE, guestAge)
                .whereEqualTo(EVENTS_ATTENDED + "."+ eventId, true)
                .orderBy(FIELD_FAMILYNAME, Query.Direction.ASCENDING);

1 个答案:

答案 0 :(得分:0)

在那一刻,没有这样的选择可以与Firestore一起做漂亮的事情。因此,我们应该考虑在onBindViewHolder中的FirestoreRecyclerAdapter方法中根据自定义条件隐藏项目。如下:

                   protected void onBindViewHolder(GuestHolder holder, int position, GuestItem guest) { 
                    Map<String, Boolean> map = guest.getEventsAttended();

                            if (map != null && map.containsKey(eventId)) {
                                holder.itemView.setVisibility(View.VISIBLE);

                            } else {
                                holder.itemView.setVisibility(View.GONE);
                                holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
                           }}

希望这有助于某人。