如何查询Firebase数据库而不显示基于布尔值

时间:2017-08-26 02:39:28

标签: android firebase firebase-realtime-database

我在Android中使用FirebaseListAdapter来显示基于特定日期的订单列表:

Query orderQuery = ordersRef.orderByChild("dateCreated").startAt(d1.getTime());


我的订单有一个完整的布尔属性

-KsRHO1sLcVxKtVMec3o
      completed: false
      dateCreated: 1503713136950

我只想在列表适配器中显示未完成的项目。 上面的当前查询检索所有订单。

问题是我不知道如何正确查询数据库以使其工作。

我唯一的想法是在populateView的{​​{1}}方法中检查FirebaseListAdapter,而不是填写与列表项关联的textView。

我可以通过哪种方式获得理想的结果?

2 个答案:

答案 0 :(得分:1)

在firebase中

没有Multi Select或“Multi Query”

所以你可以 orderByChild 创造时间或者竞争

所以你必须使用你在问题中提到的方法

    The only idea I have is in the populateView method of the
 FirebaseListAdapter to check 
if(!model.isCompleted()){ } and not fill in the textViews associated with the list item.

或者您必须编辑数据库结构

-completed
 -KsRHO1sLcVxKtVMec3o
       dateCreated: 1503713136950

 -Notcompleted
     -KsRHO1sLcVxKtVMec3o
           dateCreated: 1503713136950

就像它完成时一样..将它从未完成的Node中删除 将其添加到已完成的节点

答案 1 :(得分:0)

您可以尝试对已完成和未完成的订单使用不同的参考。

最初在下订单时,它将处于incomplete状态,当您更新order时,请移动order key complete参考

第1步: 最初订单下达时,请将订单存储在“不完整”的参考文件中,如:

-incomplete:{
    -anyRandomKeyGeneratedByFirebase:{
       "orderTitle":"My First Order"... your order detail goes here
       "orderKey":"anyRandomKeyGeneratedByFirebase"
     },
     .
     .
     .
}

以上结构将用于不完整的订单。

当您知道订单状态已完成后,您必须将订单移至complete子参考,例如:

-complete:{
        -anyRandomKeyGeneratedByFirebase:{
           "orderTitle":"My First Order"... your order detail goes here
           "orderKey":"anyRandomKeyGeneratedByFirebase"
         },
         .
         .
         .
    }

因此,它将解决您的问题。而不是提取所有订单只从complete引用中获取已完成的订单。

-orders:{
  -incompleteOrders:{
  },
  -completeOrders:{
  }
}