消防站.如何根据用户条件创建查询



我想创建查询。我正在使用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);

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

                   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));
                           }}

希望这对某人有所帮助。

最新更新