【问题标题】:orderByChild().equalTo() is always null in FirebaseorderByChild().equalTo() 在 Firebase 中始终为 null
【发布时间】:2017-09-06 22:35:25
【问题描述】:

我正在尝试获取 Firebase 的一些数据。我正在尝试做 orderby().equalTo() 但我的查询总是为空。我尝试了两个值 DeliverBy (boolean) 和 DeliverBy (long)。

查询

 queryFirebase = FirebaseDatabase.getInstance().getReference().child("rooms").orderByChild("read").equalTo(false);
        queryFirebase.addListenerForSingleValueEvent(new ValueEventListener() {

将我的消息发送到 Firebase

Long userId = ApplicationConfig.getCurrentUser().getId();
            String toServerUnicodeEncoded = StringEscapeUtils.escapeJava(etMessage.getText().toString());
            MessageFirebase message = new MessageFirebase(toServerUnicodeEncoded, new DateTime().toString("yyyy-MM-dd'T'HH:mm:ss'Z'"), userId);
            DatabaseReference messageRef = mFirebaseDatabaseReference.push();
            messageRef.setValue(message);

我的 JSON

{
  "rooms" : {
    "-KtMBWKEf7-Ot8HdMtbd" : {
      "-KtMC7CglZZ-Yp4_PQOU" : {
        "blocked" : false,
        "createDate" : "2017-09-06T14:40:17Z",
        "delivered" : false,
        "deliveredBy" : 317,
        "difDays" : 0,
        "isBlocked" : false,
        "message" : "hola",
        "read" : false
      },
      "-KtMCCdbKzP7UKFTB_qG" : {
        "blocked" : false,
        "createDate" : "2017-09-06T14:40:39Z",
        "delivered" : false,
        "deliveredBy" : 317,
        "difDays" : 0,
        "isBlocked" : false,
        "message" : "que tal",
        "read" : false
      },
      "commerceId" : 218,
      "userId" : 317
    }
  }
}

【问题讨论】:

    标签: android firebase firebase-realtime-database


    【解决方案1】:

    read 不是rooms 的直系子代

    你应该这样做

    queryFirebase = FirebaseDatabase.getInstance().getReference()
        .child("rooms")
        .child("-KtMBWKEf7-Ot8HdMtbd")
        .orderByChild("read")
        .equalTo(false);
    queryFirebase.addListenerForSingleValueEvent(new ValueEventListener() {
    

    【讨论】:

    • 是的,但我假设我不知道我的孩子是什么(“-KtMBWKEf7-Ot8HdMtbd”)。
    • 您的数据结构可能不正确。为什么有“KtMBWKEf7-Ot8HdMtbd”作为密钥?它代表什么?房间名称?
    • 我正在聊天,第一个键代表聊天室,第二个键:“KtMBWKEf7-Ot8HdMtbd”是这个房间的一个用户的消息
    • 我假设您在查询数据时“确实”知道/拥有聊天室键(层次结构中的第一个键)。只需按照@Mariano 的建议将其添加到路径中即可。
    猜你喜欢
    • 2017-08-22
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2021-12-24
    相关资源
    最近更新 更多