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