我想创建查询。我正在使用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));
}}
希望这对某人有所帮助。