无法从android中的firebase读取数据 [英] Unable to read data from firebase in android
问题描述
我正在开发Android应用程序,其中 Firebase
正用于维护移动后端。我在 Firebase
{
用户:{
-Kh2wjxeT-w26opA0yqe:{
email:XX@gmail.com,
firstName:XX,
利息:{
interest:[Cricket,Table Tennis,Football]
},
lastName:XXX,
密码:abcd @ 1234
}
}
}
Users.java
@IgnoreExtraProperties
public class User {
public String firstName;
public String lastName;
public String email;
公共字符串密码;
公共利息;
$ b public User(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}
public User firstName,String lastName,String email,String password,Interest interest){
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
this.interest = interest;
$ h2 Interest.java
public class Interest {
public List< String>利益;
$ b public Interest(){
//调用DataSnapshot.getValue(User.class)所需的默认构造函数
}
public Interest(List< ; String>兴趣){
this.interests = interest;
$ b我已经添加了 addValueEventListener
在子节点用户这样 mDatabase.child(users)。addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
for(DataSnapshot noteDataSnapshot:dataSnapshot.getChildren()){
User user = dataSnapshot.getValue(User .class);
Log.d(Scheduled,user.firstName + user.lastName + user.interest.interests.toString());
}
}
@Override
public void onCancelled(DatabaseError error){
//无法读取值
}
});
它正在读取正确的数据 Firebase $ c $但是它并不是映射 Users
java对象中的数据,所以当我无法访问值时。我不知道我在这里做了什么错误。
$ b
Log.d(Scheduled,user.firstName + user.lastName + user.interest.interests.toString()); / p>
解决方案为了显示数据,您需要像这样更改代码:
mDatabase.child(users)。child(userId).addValueEventListener(new ValueEventListener(){
@Override
public void onDataChange(DataSnapshot dataSnapshot){
String firstName = dataSnapshot.child(firstName).getValue(String.class);
Log.d(Scheduled,firstName);
$ b @Override
public void onCancelled(DatabaseError error){
//无法读取值
}
});
其中 userId
是生成的唯一ID由 push()
方法。
I am working on android app where Firebase
is being used for maintaining mobile back end. I have database in this format on Firebase
{
"users" : {
"-Kh2wjxeT-w26opA0yqe" : {
"email" : "XX@gmail.com",
"firstName" : "XX",
"interest" : {
"interests" : [ "Cricket", "Table Tennis", "Football" ]
},
"lastName" : "XXX",
"password" : "abcd@1234"
}
}
}
Users.java
@IgnoreExtraProperties
public class User {
public String firstName;
public String lastName;
public String email;
public String password;
public Interest interest;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String firstName, String lastName, String email, String password, Interest interest) {
this.firstName = firstName;
this.lastName = lastName;
this.email = email;
this.password = password;
this.interest = interest;
}
}
Interest.java
public class Interest {
public List<String> interests;
public Interest() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public Interest(List<String> interests) {
this.interests = interests;
}
}
I have added addValueEventListener
on child "users" in this way
mDatabase.child("users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot noteDataSnapshot : dataSnapshot.getChildren()) {
User user = dataSnapshot.getValue(User.class);
Log.d("Scheduled", user.firstName + user.lastName + user.interest.interests.toString());
}
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
}
});
It is fetching correct data what I have on Firebase
but it is not mapping data in Users
java object so when I am unable to access values. I am not sure what mistake I am doing here.
Log.d("Scheduled", user.firstName + user.lastName + user.interest.interests.toString());
解决方案 In order to display the data, you need change your code like this:
mDatabase.child("users").child(userId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String firstName = dataSnapshot.child("firstName").getValue(String.class);
Log.d("Scheduled", firstName);
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
}
});
In which userId
is the unique id generated by the push()
method.
这篇关于无法从android中的firebase读取数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!