gpt4 book ai didi

java - firebase 实时数据库 W/ClassMapper : No setter/field for found on class

转载 作者:行者123 更新时间:2023-12-01 19:12:42 25 4
gpt4 key购买 nike

第一次使用 Firebase 实时数据库,我尝试使用 Android 应用程序从数据库读取数据,这是我的第一次体验,很抱歉,我习惯使用 MySQL,所以这种 JSON 格式对我来说似乎很复杂

我收到错误 No setter/field for find on class。

private FirebaseDatabase mDatabase = FirebaseDatabase.getInstance();

DatabaseReference mDbRef = mDatabase.getReference().child("users");

mDbRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Users user = dataSnapshot.getValue(Users.class);

Log.d("result", "User name: " + user.getName() + ", email " + user.getEmail());
}

@Override
public void onCancelled(DatabaseError error) {
Log.w("error", "Failed to read value.", error.toException());
}
});

database example

这是我的用户类

public class Users {

private String phone;
private String email;
private String name;
private String adresse;
private String ville;
private String zip;

public Users() {
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getEmail() {
return email;
}

public void setEmail(String email) {
this.email = email;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getAdresse() {
return adresse;
}

public void setAdresse(String adresse) {
this.adresse = adresse;
}

public String getVille() {
return ville;
}

public void setVille(String ville) {
this.ville = ville;
}

public String getZip() {
return zip;
}

public void setZip(String zip) {
this.zip = zip;
}
}

我附上了数据库结构的图像,如果有人有任何解决方案,请帮助我

最佳答案

要解决此问题,您需要使用 getChildren() 方法循环遍历整个 users 节点,如以下代码行所示:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference usersRef = rootRef.child("users");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Users users = ds.getValue(Users.class);
Log.d("result", "User name: " + user.getName() + ", email " + user.getEmail());
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
}
};
usersRef.addListenerForSingleValueEvent(valueEventListener);

logcat 中的结果将是所有用户的姓名和电子邮件。

关于java - firebase 实时数据库 W/ClassMapper : No setter/field for found on class,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59458127/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com