gpt4 book ai didi

android - Firebase 检索当前子项然后设置为另一个子项 Android 的子项

转载 作者:搜寻专家 更新时间:2023-11-01 09:28:27 25 4
gpt4 key购买 nike

** 已编辑 **

我需要 Firebase 方面的帮助。我需要做的是:

  1. 在 Tokens 下创建一个名为 Tokens(与 Clients 和 Workers 一致)的新数据库引用;
  2. 根据当前用户的 child (例如 Carpenters、Plumbers 或 Electricians)创建另一个新的数据库引用

当前代码:

    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);

Current database

我需要这样:

See image

Updated Screenshot

最佳答案

要解决这个问题,您需要像这样获取经过身份验证的用户的 uid:

String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();

有了这个 uid,您就可以在 Activity 中需要的任何地方使用它。因此,要根据您的数据库结构添加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);

enter image description here

最终答案:

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);

关于android - Firebase 检索当前子项然后设置为另一个子项 Android 的子项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49297961/

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