** EDITED **
我需要 Firebase 方面的帮助。我需要做的是:
- 创建一个名为的新数据库引用Tokens(与客户和工人一致),并在代币下;
- 根据当前用户的子级(例如木匠、管道工或电工)创建另一个新的数据库引用
当前代码:
FirebaseDatabase db = FirebaseDatabase.getInstance();
DatabaseReference tokens = db.getReference(Common.token_table);
Token token = new Token(FirebaseInstanceId.getInstance().getToken());
//if user is already logged in, will update token
tokens.child(FirebaseAuth.getInstance().getCurrentUser().getUid())
.setValue(token);
当前数据库
我需要这样:
看图片
更新的截图
要解决这个问题,您需要获得uid
经过身份验证的用户如下所示:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
有了这个uid
,您可以在活动中需要的任何地方使用它。所以要添加tokenId
根据您的数据库结构,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String tokenId = FirebaseInstanceId.getInstance().getToken();
rootRef.child("Tokens").child("Carpenters").child(tokenId).setValue(true);
你的数据库结构将如下所示:
Firebase-root
|
--- Tokens
|
--- Carpenters
|
--- "uid1": true
根据您的编辑,请使用以下代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
String tokenId = FirebaseInstanceId.getInstance().getToken();
rootRef.child("Tokens").child("Plumbers").child(uid).child("token").setValue(tokenId);
最终答案:
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
String tokenId = FirebaseInstanceId.getInstance().getToken();
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference workersRef = rootRef.child("Workers");
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
if (ds.child(uid).exists()) {
rootRef.child("Tokens").child(ds.getKey()).child(uid).child("token").setValue(tokenId);
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
workersRef.addListenerForSingleValueEvent(valueEventListener);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)