【发布时间】:2018-03-30 10:39:09
【问题描述】:
我正在尝试构建一个基于旅行的应用程序,注册用户可以在其中成为导游。对于这个项目,我使用 firebase 数据库来获取在线功能。我的问题是当用户想要成为向导时,我从常规 USER 节点获取他的个人详细信息并将其复制到 GUIDES 节点。我希望所有注册用户都能看到所选城市的现有指南。
假设 B 用户想成为伦敦的向导。其他用户(非向导)可以通过单击城市(在本例中为伦敦)找到向导。我找不到正确引用节点的方法。
newdatabaseRef = FirebaseDatabase.getInstance().getReference().child("Guides").push();
newdatabaseRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String gName, gSurname, gDate, gPhone, gPhoto, gCity;
gName = guideName.getText().toString().trim();
gSurname = guideSurname.getText().toString().trim();
gDate = guideDate.getText().toString().trim();
gPhone = guidePhoneNr.getText().toString().trim();
gPhoto = guidePhotoURL.getText().toString().trim();
gCity = pickedCity.getText().toString().trim();
UserModelClass guides = new UserModelClass(gPhoto, gName, gSurname , gDate, gPhone, gCity);
newdatabaseRef.setValue(guides);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这就是我如何将用户的详细信息存储到带有一个额外子 gCity 的新 Guide 节点中。
Firebase 结构
这就是我尝试从数据库中提取数据并将其填充到适当城市的方式。我正在尝试将指南与所选城市相匹配。如果指南选择伦敦作为城市,我将使用 Post cityName 进行检查。
guideDataRef = FirebaseDatabase.getInstance().getReference().child("Guides");
mDataRef.child(post_key).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()){
final String bb = ds.getValue().toString();
//Log.d(TAG, "TEST " + bb);
guideDataRef.startAt("pickedCity").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String cc = (String) dataSnapshot.child("pickedCity").getValue();
// Exception NullPointer
try{
if(dataSnapshot.child("pickedCity").getValue().equals(bb)){
guideName.setText(cc);
}
}catch (NullPointerException e){
Log.d(TAG, "NULL");
}
// End of Exception
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
谢谢
【问题讨论】:
-
您能否编辑您的问题以使您的问题/问题更加突出。目前我真的不明白你想要什么。
-
你也应该删除这个问题或this one 因为再次发布同样的问题是一个非常糟糕的主意。相反,您应该改进您的问题。看看how to ask和mcve
-
我需要在一个城市(即 Calp)注册的指南在用户选择该城市时全部显示。我想正确引用数据库节点,这就是我需要你帮助的原因。
标签: java android firebase firebase-realtime-database