从火力基地检索信息
Posted
技术标签:
【中文标题】从火力基地检索信息【英文标题】:Retrieve info from firebase 【发布时间】:2021-12-18 15:47:36 【问题描述】:我需要从 Firebase 实时数据库中检索特定信息以发送推送消息,但不知道该怎么做,我需要从所有用户那里获取设备令牌字符串,因此尝试调用用户,应该调用用户ID(这部分是我迷路的地方,不知道如何获取此路径),然后是设备令牌。
这就是我所拥有的:
UsersRef = FirebaseDatabase.getInstance().getReference().child("Users");
usersIDs = UsersRef.getKey().toString();
UsersRef.child(usersIDs).addValueEventListener(new ValueEventListener()
@Override
public void onDataChange(@NotNull DataSnapshot dataSnapshot)
if (dataSnapshot.exists())
if (dataSnapshot.hasChild("device_token"))
receiverUserDeviceToken = dataSnapshot.child("device_token").getValue().toString();
@Override
public void onCancelled(@NotNull DatabaseError error)
);
【问题讨论】:
为了更好地理解,您需要获取f4...XMY:APA...wr3
和eff...8NT:APA...Bd7
值,对吧?
正确,我需要同时获取两个值
【参考方案1】:
根据你上一条评论:
正确,我需要获取这两个值。
请使用以下代码行:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference users = rootRef.child("Users");
usersRef.get().addOnCompleteListener(new OnCompleteListener<DataSnapshot>()
@Override
public void onComplete(@NonNull Task<DataSnapshot> task)
if (task.isSuccessful())
for (DataSnapshot userSnapshot : task.getResult().getChildren())
String deviceToken = userSnapshot.child("device_token").getValue(String.class);
Log.d("TAG", deviceToken);
else
Log.d("TAG", task.getException().getMessage()); //Don't ignore potential errors!
);
logcat 中的结果将是:
f4...XMY:APA...wr3
eff...8NT:APA...Bd7
请记住,为了能够从 DataSnapshot 对象中获取所有结果,您必须使用 .getChildren()
遍历子对象。
【讨论】:
请看我的帖子,我编辑了它 对不起,它应该是“用户”,作为我编辑的答案。但除此之外,请将实时数据库依赖项升级到最新版本。在这种情况下,get()
将可用,对吗?试一试,告诉我它是否有效。
太棒了!感谢您的帮助!
不客气,迭戈。以上是关于从火力基地检索信息的主要内容,如果未能解决你的问题,请参考以下文章
火力基地。如何在 Node JS 中收听集合并获取最新修改文档的 ID?