首页 > 解决方案 > 如何使查询等于长值?

问题描述

我尝试使用 equalTo() 从实时数据库中进行查询。

database.getReference(verifiedProductsDb.dbPartVerifiedProducts).order By Child(verifiedProductsDb.barcode).equalTo(b.toLong()).get().addOnCompleteListener {

但是android studio给出了:

None of the following functions can be called with the argument supplied.
equalTo(Boolean) defined in com.google.firebase.database.Query
equalTo(Double) defined in com.google.firebase.database.Query
equal To(String?) defined in com.google.firebase.database.Query

尽管使用 setValue,长值被非常成功地写入同一个数据库并且没有问题。

在此处输入图像描述 在此处输入图像描述

标签: firebasekotlinfirebase-realtime-database

解决方案


Android 上的实时数据库 API 仅支持Double数字类型。底层的有线协议和数据库将正确解释长数字,所以你应该能够做到:

database.getReference("VerifiedProducts")
  .orderByChild("barcode")
  .equalTo(b.toLong().toDouble()) // 
  .get().addOnCompleteListener {
    ...

推荐阅读