我在尝试访问firebase实时数据库中的嵌套子节点时遇到问题。
我遇到的错误是
通用域名格式。谷歌。firebase。数据库DatabaseException:无法转换java类型的对象。lang.字符串以键入sg。埃杜。新加坡科技公司。团队项目。用户
我在这里看到了解决方案:如何访问Firebase数据库中嵌套在子节点中的子节点?
这是我尝试从firebase调用数据的代码:
DatabaseReference databaseUsers;
databaseUsers = FirebaseDatabase.getInstance().getReference("users");
databaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
//method is called whenever data at location is updated
showData(dataSnapshot);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
return view;
}
private void showData(DataSnapshot dataSnapshot) {
FirebaseUser currentUser = FirebaseAuth.getInstance().getCurrentUser();
String userID = currentUser.getUid();
for (DataSnapshot uniqueIDSnapshot : dataSnapshot.getChildren()) {
//Loop 1 to go through all child nodes of users
for(DataSnapshot vouchersSnapshot : uniqueIDSnapshot.child(userID).getChildren()){
//loop 2 to go through all the child nodes of vouchers node
users user = vouchersSnapshot.getValue(users.class);
}
}
}
这是我的用户类
package sg.edu.singaporetech.teamproject;
public class users {
String id;
String email;
String level;
String steps;
String vouchers;
public users() {
}
public users(String id, String email, String level) {
this.id = id;
this.email = email;
this.level = level;
this.steps = steps;
this.vouchers = vouchers;
}
public String getId() {
return id;
}
public String getEmail() {
return email;
}
public String getLevel() {
return level;
}
public String getSteps() { return steps;}
public String getVouchers() { return vouchers;}
public void setId(String id) {
this.id = id;
}
public void setEmail(String email) {
this.email = email;
}
public void setLevel(String level) {
this.level = level;
}
public void setSteps(String steps) {
this.steps = steps;
}
public void setVouchers(String vouchers) {
this.vouchers = vouchers;
}
}
那么,我如何才能不获得错误,并具体获得当月(即3月19日)数据库结构中显示的“true”或“false”值呢?
非常感谢你的帮助。
要检索true
和false
,请尝试以下操作:
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("users").child(userID).child("vouchers");
mDatabaseUsers.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String values = dataSnapshot.child("april19").getValue(String.class);
String boolValues = dataSnapshot.child("march19").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这里的dataSnapshot位于子凭证,您可以轻松访问19年4月和19年3月的值,而无需迭代。
假设我的数据库结构如下: 当删除任何用户1\u UID时,我想从所有节点a、b、c中删除用户1\u UID。 例如,如果我从节点b中删除了key1:user1\u-UID,是否有一种方法也可以从节点a和节点c中删除key1:user1\u-UID,而无需遍历所有节点?还是我的数据结构错误(请注意,这些数据可能嵌套得更深)?
问题内容: 我正在一个项目中,用户对我们的代客服务的请求在另一端代客接受请求。 我正在使用Firebase作为后端,并应要求将客户uid保存在“ request”子项上。 当代客接受请求时,客户uid应从“请求”节点移至“进行中”节点。 我怎样才能做到这一点? 问题答案: 我建议使用这个: 这来自以下来源:https : //gist.github.com/katowulf/6099042。我在J
我的Firebase数据库映像在Firebase的实时数据库中,我正在尝试访问父节点的名称,并给出了子节点的名称。但是,.parent似乎需要对子节点的引用,如果没有父节点的名称,我似乎无法获得子节点的引用。 这是我的数据的代码: 问题出在like函数中:如果我能找到一种方法来获取发tweet(参数t表示的tweet)的人的userId,那么第一个var y和所有这些都是不必要的。 如果我可以得到
问题内容: 我正在尝试获取Firebase中嵌套节点的密钥,但不确定如何执行此操作。 例如在这种情况下: 例 我怎么知道1之内有2,3,4? 我正在考虑将值分别放在Firebase中的列表中。但是,有没有更聪明的方法呢?是否有更有效的方法来获取Firebase中所有嵌套节点的密钥? 问题答案: 在Android中 允许访问此快照的所有直接子级。可以在本机for循环中使用: 在iOS中 斯威夫特3:
我当前的firebase结构如下所示 本来我的保安看起来 这一切都很好,因为我可以通过 然而,我想给这个分支增加更多的安全性,这样用户就不能通过写操作(读取是可以的)更新前端的代码来修改其中的一些条目。我希望用户能够根据isAdmin标志修改这些条目,例如, companyId(读:auth!=null,写:isAdmin==true) 因为所有读取=auth!=无效的起初,我认为因为我能够读取所
我想删除firebase实时数据库中某个子项的特定子项。 我已经添加了我的数据库的图片。 我想删除突出显示的子对象。