当前位置: 首页 > 知识库问答 >
问题:

Firebase查询equalTo()或startAt()。endAt()停止工作

锺离伟彦
2023-03-14

我已经尝试了其他帖子的建议,但没有成功。我只是遇到了一个问题,我得到了以下代码,当用户单击特定日期时显示来自Firebase数据库的数据。如果我注释掉(start At(), endAt()),回收器将填充所有数据,当我添加equalTo()或start At(). endAt()时,回收器不会填充。之前的代码正常工作,只是最近停止工作,我不知道为什么。代码如下所示:贝娄是适配器:

fun calendarAdapt(options:FirebaseRecyclerOptions<ModelCalendar>,dataref:  
 DatabaseReference,context: Context):FirebaseRecyclerAdapter<ModelCalendar,CalendHold>{
    return object :FirebaseRecyclerAdapter<ModelCalendar,CalendHold>(options){
        override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): CalendHold {
            return   
 CalendHold(LayoutInflater.from(parent.context).inflate(R.layout.list_row_calendar,parent,false))
        }
        override fun onBindViewHolder(holder: CalendHold, positionc: Int, modelc: ModelCalendar) 
{

            val postkeyC= getRef(positionc).key
            dataref.child(postkeyC!!).addValueEventListener(object:ValueEventListener{
                override fun onDataChange(dataSnapshot: DataSnapshot) {
                    holder.bindlogC(modelc)
                 }
                override fun onCancelled(p0: DatabaseError) {
                }
            })
        }
    }
}

这是查询:

 fun query2(cont: LifecycleOwner,selected_date:String):FirebaseRecyclerOptions<ModelCalendar>{
    val queryy = FirebaseDatabase.getInstance()
        .reference
        .child("Ev")
        .startAt(selected_date)
         .endAt(selected_date)

    return FirebaseRecyclerOptions.Builder<ModelCalendar>()
        .setQuery(queryy,ModelCalendar::class.java)
        .setLifecycleOwner(cont)
        .build()
 }

我在这里应用适配器:

  mDb = FirebaseDatabase.getInstance().reference.child("Ev")
val c = Calendar.getInstance()
    val year2 = c.get(Calendar.YEAR)
    val month2 = c.get(Calendar.MONTH)
    val day2 = c.get(Calendar.DAY_OF_MONTH)
    val dayd= checkDigit(day2)
    val monthd= checkDigit(month2+1)
    val datetoday = java.lang.StringBuilder()
        .append(dayd)
        .append("-")
        .append(monthd)
        .append("-")
        .append(year2)
    calendinf(datetoday.toString())
    calendarid.setOnDateChangeListener { view, year, month, dayOfMonth ->
        val month = checkDigit(month+1)
        val day = checkDigit(dayOfMonth)
        val datesel =StringBuilder()
            .append(day)
            .append("-")
            .append(month)
            .append("-")
            .append(year)
        calendinf(datesel.toString())
         }
}
    private fun calendinf(selected_date:String){
    val options = Queryess().query2(this,selected_date)
    val adaptorC = Adaptall().calendarAdapt(options, mDb,this)
    calerec!!.adapter=adaptorC!!
}

共有1个答案

汪典
2023-03-14

我修复它,这是查询,缺少“orderBychild()”字段,很可能我错误地删除了,否则无法解释它:))

 类似资料:
  • 版本信息 角度:1.5.8火基:3.2.1角度:2.0.1 测试用例 预期行为 创建具有指定起点的查询。 实际行为

  • 我有一个firebase查询,如下所示: 我查询的区域结构如下所示 基于在这里找到的按键排序功能,它首先尝试将键排序为数字,然后按字典顺序排序。正如您在图像中看到的,我的键是字符串。 当和查询不太起作用,因为它返回这个。从我的理解来看,它不应该返回对象的第一个属性,但当我设置和时,它返回: 对我来说,这似乎不正确,因为它应该不返回任何内容,因为从“0795”开始到“0810”结束的字符串之间不存在

  • 使用AngularFire 8.0 Bellow是使用startAt和endAt限制firebase数据的代码。 返回的数据应该是来自firebase的单个元素,但在使用console时queryArray为空。调试日志。 没有使用startAt和endAt,queryArray包含存储在firebase中的所有元素。因此,记录queryArray$keyAt(0)将第一个元素的名称作为输出。正如

  • 我有一个使用Firebase SimpleLogin的应用程序,但由于我有额外的用户数据,我将其存储在[my-fire base]下。firebaseio.com/users/[用户名]。下面的片段显示了它是如何完成的 由于每个单独用户的数据都是基于用户名我通过uid优先排序的,因此我可以稍后通过uid获取其他用户数据。 当firebase登录事件触发时,我有以下处理程序,负责查询firebase

  • 我读了Dan McGrath对这个问题的回答,他说在Firestore中有以下代码行的等价物: 这一行在Firebase Realtime database中工作得很好,但我试图在云Firestore中找到等效的几天。有人能帮我吗? 提前感谢!

  • 问题内容: 这段代码工作正常。 我想要的唯一改进是 -当我传递“ Pi”时,它将获取所有以“ Pi”名称开头的项目对象,但是当我输入“ pi”时,它什么也不返回! 这意味着我希望此方法不区分大小写。因此,在那种情况下,“ Pi”或“ pi”等任何东西(小写或大写)都可以使用。 问题答案: Firebase当前不支持小写搜索。处理此问题的最佳方法是将小写字符串与原始字符串一起存储,然后查询小写字符串