Firebase Cloud Firestore 查询 whereEqualTo 供参考

Par*_*dox 5 android firebase google-cloud-firestore

我正在尝试创建一个查询,该查询仅选择引用等于给定引用的文档,使用 Java 进行 Android 开发。它将匹配的文档包含路径“/users/someUser”的引用。我正在像这样创建参考:

DocumentReference ref = mDatabase.document("users/someUser");
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

DocumentReference ref = mDatabase.document("/users/someUser");
Run Code Online (Sandbox Code Playgroud)

然后查询:

Query query = mDatabase.collection("myCollection").whereEqualTo("refField", ref).limit(10); 
Run Code Online (Sandbox Code Playgroud)

但是,当我运行查询并task.isSuccessful()在 onComplete 方法中检查 时,它没有通过,即它不起作用,而当我删除 时.whereEqualTo(),它通过并且任务的结果不为空。如何正确使用.whereEqualTo()来检查包含特定参考的所有文档?

与我的查询匹配的文档示例如下:

/myCollection/GDpojS5koac2C7YlIqxS其中包含字段:(
refField: /users/someUser 类型引用的值)

与我的查询不匹配的文档示例如下:

/myCollection/J5ZcVAMYU1nI5XZmh6Bv其中包含字段:(
refField: /users/wrongUser 类型引用的值)

Luc*_*ano 1

我认为您需要添加一个 get() 方法来运行查询并添加一个 onCompletionListener。

像这样的东西应该有效:

mDatabase.collection("myCollection")
  .whereEqualTo("refField", ref)
  .limit(10)
  .get()
  .addOnCompleteListener({task ->
                         if(task.isSuccessful){
                            val result = task.result                 
                        })
Run Code Online (Sandbox Code Playgroud)

上面的例子是在kotlin中,但我猜在java中它是类似的