【问题标题】:Query Firestore in Firebase Android在 Firebase Android 中查询 Firestore
【发布时间】:2023-03-07 16:40:01
【问题描述】:

在哪里不工作它不会过滤结果我如何修复它

这是我的数据库

这是我的代码

 CollectionReference collection = mDB.collection("full_order");
    Query query = collection.whereEqualTo("Bakeryid", "1");
    query.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
        @Override
        public void onComplete(@NonNull Task<QuerySnapshot> task) {

            if (task.isSuccessful()) {
                Log.d("Results", task.getResult().toString());
                Toasty.success(getContext(), "Succefuul ", Toasty.LENGTH_LONG).show();
                userOrder = task.getResult().toObjects(UserOrder.class);
                adapterTruckDrivers = new RecycleViewAdapterTruckDrivers(getContext(), userOrder);
                recyclerView.setAdapter(adapterTruckDrivers);

            } else {
                Log.d("Results", "Errrror");
                //   Log.d("Results",task.getResult().toString());
                Toasty.error(getContext(), "Error ", Toasty.LENGTH_LONG).show();
            }
        }
    });

我有一个问题 当我使用 Firestore 时,我可以使用 FirebaseDatabase 方法,比如 child 等吗?

【问题讨论】:

  • 添加你的数据库结构图片,它会帮助你弄清楚。
  • 已编辑.........
  • 你有这个 Tyc... 的东西在中间
  • 我不明白?
  • 我在您的文档中看不到任何 Bakeryid 属性。能否请您添加更详细的屏幕截图?也请回复@AlexMamo

标签: android firebase firebase-realtime-database google-cloud-firestore firebase-authentication


【解决方案1】:

我不熟悉firestore,但您需要在引用下一个集合之前查询文档,就像这样

String id  = "Tyc...."
CollectionReference collection = mDB.collection("full_order");
Query query =collection.document(id).whereEqualT..

要了解和了解更多信息,请参阅此link

【讨论】:

  • 我的代码有效,但我忘记在我的应用中启用 Firebase 身份验证
【解决方案2】:

改变这个:

 CollectionReference collection = mDB.collection("full_order");
    Query query = collection.whereEqualTo("Bakeryid", "1");

进入这个:

 CollectionReference collection = mDB.collection("full_order");
    Query query = collection.whereEqualTo("bakeryID", "1");

whereEqualTo 中的属性应该与数据库中的属性匹配

【讨论】:

  • 我的代码有效,但我忘记在我的应用中启用 Firebase 身份验证
【解决方案3】:

要解决这个问题,请更改以下代码行:

Query query = collection.whereEqualTo("Bakeryid", "1");

到

Query query = collection.whereEqualTo("order.BakeryID", 1);

您的代码存在三个问题。

  • 属性的名称是BakeryID 和不是 Bakeryid。看到小写的id?
  • 该属性嵌套在order 映射下。您应该在查询中指定。
  • 您将作为String 而不是Number 传递给whereEqualTo() one。在您的数据库中,该属性的值不是字符串。看,它不包含引号?

【讨论】:

    猜你喜欢
    • 2020-08-28
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多