【问题标题】:in android with firebase as baas service,how to retrive only specific child nodes在具有firebase作为baas服务的android中,如何仅检索特定的子节点
【发布时间】:2015-08-07 12:32:34
【问题描述】:

我只想从 Firebase 快照中检索像 india-margao-pcc-sandeep 这样的 classtalk 节点。

如何将它存储在 Android 中或如何检索它?

Firebase searchRef =Ref.child("classtalk");
searchRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot snapshot) {
        Log.d("djj search",snapshot.toString());

        for(DataSnapshot postSnapshot : snapshot.getChildren()){
            SchoolSearchModel mSearch = postSnapshot.getValue(SchoolSearchModel.class);
            Log.d("djj actual search",mSearch.getClasstalk());
            Log.d("djj actual search",mSearch.getClasstalkmembers());
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {
        Log.d("djj search", firebaseError.getMessage());
    }
});

我在 Json 中的数据如下:

{
  "india-margao-pcc-sandeep": {
    "-Jw6WEO0mNbWR3FgfZBA": {
      "admin": "sandeep",
      "city": "margao",
      "country": "india",
      "school": "pcc"
    },
    "classtalkmembers": {
      "-Jw6WEO4IMxm-i0xkxmG": {
        "membername": "sandeep"
      }
    }
  },
  "india-ponda-rit-sandeep": {
    "-Jw6VuRQZmf9PggBRy-q": {
      "admin": "sandeep",
      "city": "ponda",
      "country": "india",
      "school": "rit"
    },
    "classtalkmembers": {
      "-Jw6VuRZa1XkQ6Gs6aVO": {
        "membername": "sandeep"
      }
    }
  }
}

/////////////////// 这是我得到的错误: " 08-08 10:19:00.266 1857-1857/com.example.systems_5.firebasedj

E/AndroidRuntime: FATAL EXCEPTION: main

com.firebase.client.FirebaseException: Failed to bounce to type
        at com.firebase.client.DataSnapshot.getValue(DataSnapshot.java:183)
        at com.example.systems_5.firebasedj.SchoolSearch$1$1.onDataChange(SchoolSearch.java:60) at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45) at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)
        at om.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)at android.os.Handler.handleCallback(Handler.java:615)
        at android.os.Handler.dispatchMessage(Handler.java:92)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4918)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511) atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)
        at dalvik.system.NativeStart.main(Native Method)
 Caused by: com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize instance of java.lang.String out of START_OBJECT token
        at [Source: java.io.StringReader@41c86e40; line: 1, column: 2] (through reference chain: com.example.systems_5.firebasedj.SchoolSearchModel["classtalkmembers"])
        at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:575)
        at com.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:46)            atcom.fasterxml.jackson.databind.deser.std.StringDeserializer.deserialize(StringDeserializer.java:11) atcom.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettablBeanProperty.java:464) at.com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:107) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:295) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:121)at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:2888)atcom.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2034)atcom.firebase.client.DataSnapshot.getValue(DataSnapshot.java:181)atcom.example.systems_5.firebasedj.SchoolSearch$1$1.onDataChange(SchoolSearch.java:60) at com.firebase.client.core.ValueEventRegistration.fireEvent(ValueEventRegistration.java:45)  at com.firebase.client.core.view.DataEvent.fire(DataEvent.java:45)at com.firebase.client.core.view.EventRaiser$1.run(EventRaiser.java:38)at android.os.Handler.handleCallback(Handler.java:615)at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:4918)at java.lang.reflect.Method.invokeNative(Native Method)atjava.lang.reflect.Method.invoke(Method.java:511) atcom.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761) dalvik.system.NativeStart.main(Native Method)

"

【问题讨论】:

  • 不清楚您当前的问题是什么。您拥有的代码看起来不错。如果有编译器错误或异常,请将其添加到您的问题中。否则,请说明您看到的行为和您期望看到的行为。

标签: android firebase


【解决方案1】:

您必须为每种类型创建一个模型类 (POJO),以便 firebase 可以将数据“反弹”给您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多