我已使用实时数据库进行此设置:
->users
->uid
->name
->email
->other info
如果我想保存用户数据,我将使用我的 User 类,然后在数据库中设置对象,如下所示:
//assume variables have already been declared...
mFirebaseAuth = FirebaseAuth.getInstance();
mFirebaseUser = mFirebaseAuth.getCurrentUser();
User user = new User(name, email, other values...);
mDBRef.child("users").child(mFirebaseUser.getUid()).setValue(user);
我尝试了一下,效果很好。
但是我如何从数据库中检索这些值呢?例如,一旦我设置了如上所示的用户对象,我可能想要检索用户的电子邮件。我的意思不是通过登录提供商获取电子邮件。我想要通过实时数据库发送电子邮件。我已经尝试解决这个问题有一段时间了,但文档并没有多大帮助。它显示的只是设置侦听器以等待数据更改。但我不是在等待改变,我不需要倾听者。我想通过使用 JSON 树中的键直接获取数据库中的值。这可以通过实时数据库实现吗?如果是这样,怎么办,因为文档没有解释它或者我只是不理解它。如果不可能,我应该使用存储数据库还是其他东西?谢谢。
Firebase 使用侦听器来获取数据。这就是它运作的本质。不过,您可以使用单个事件侦听器(相当于仅抓取一次数据)。它将立即触发并获取数据,并且不会再次触发。以下是获取当前用户电子邮件的代码示例:
//Get User ID
final String userId = getUid();
//Single event listener
mDatabase.child("users").child(userId).addListenerForSingleValueEvent(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get user value
User user = dataSnapshot.getValue(User.class);
//user.email now has your email value
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)