Firebase 数据库返回 null
Posted
技术标签:
【中文标题】Firebase 数据库返回 null【英文标题】:Firebase database return null 【发布时间】:2020-08-20 04:06:55 【问题描述】:当我读取 Firebase 数据库时,city
和 town
变量显示为 null。为什么?
Denemesiralamaisyerleri deneme = new Denemesiralamaisyerleri();
FirebaseUser firebaseUser = firebaseAuth.getCurrentUser();
String id = firebaseUser.getUid();
DatabaseReference userdata = FirebaseDatabase.getInstance().getReference().child("users").child(id);
ValueEventListener rdn = new ValueEventListener()
@Override
public void onDataChange(DataSnapshot dataSnapshot) // Read user info from the database
deneme = dataSnapshot.getValue(Denemesiralamaisyerleri.class);
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
Toast.makeText(UserInterfaceBerber.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();
;
userdata.addValueEventListener(rdn);
city = deneme.getCity();
town = deneme.getTown();
ilin.setText(city);
ilcenin.setText(town);
Toast.makeText(UserInterfaceBerber.this, city + " " + town + " ", Toast.LENGTH_LONG).show();
我的数据库结构是这样的:
users
igORGoET3gT6i8CV4wvtuN3l08z1
city:
"Antalya"
email:
"ahmetbulur@gmail.com"
namesurname:
"Ahmet bulur"
phonenum:
"05346789445"
town:
"Alanya"
此外,对于此 toast 消息,“city”和“town”变量显示为空。我希望它会显示“Antalya”+“Alanya”作为祝酒词:
Toast.makeText(UserInterfaceBerber.this, city + " " + town + " ", Toast.LENGTH_LONG).show();
【问题讨论】:
请发布您的数据库结构的屏幕截图以及哪些值返回 null? 请将您的数据库结构添加为 JSON 文件或至少是屏幕截图。还请指出您获得空值的行。请回复@AlexMamo @AlexMamo 现在你可以看看我的问题了 【参考方案1】:由于数据是从 Firebase 异步加载的,因此您应该仅在操作完成时使用该数据,并且仅在 onDataChange()
方法中使用该数据,如以下代码行所示:
Denemesiralamaisyerleri deneme=new Denemesiralamaisyerleri();
FirebaseUser firebaseUser=firebaseAuth.getCurrentUser();
String id=firebaseUser.getUid();
DatabaseReference userdata=FirebaseDatabase.getInstance().getReference().child("users").child(id);
ValueEventListener rdn=new ValueEventListener()
@Override
public void onDataChange( DataSnapshot dataSnapshot) //read user info from database
deneme=dataSnapshot.getValue(Denemesiralamaisyerleri.class);
city=deneme.getCity();
town=deneme.getTown();
ilin.setText(city);
ilcenin.setText(town);
Toast.makeText(UserInterfaceBerber.this,city+" "+town+" ",Toast.LENGTH_LONG).show();
@Override
public void onCancelled(@NonNull DatabaseError databaseError)
Toast.makeText(UserInterfaceBerber.this,databaseError.getMessage(),Toast.LENGTH_LONG).show();
;
userdata.addValueEventListener(rdn);
有关更多信息,我建议您查看我在此 post 中的回答的最后一部分,其中我解释了如何使用自定义回调来完成。您也可以看看这个 video 以获得更好的理解。
【讨论】:
以上是关于Firebase 数据库返回 null的主要内容,如果未能解决你的问题,请参考以下文章
当数据存在时,Swift firebase 快照返回 null
Firebase Rest Api 从我的模型类中读取数据返回 null [重复]