我是Firebase的新手。
我正在尝试分配有关用户在我的应用程序中注册的更多信息,因为对于每个用户来说,名称,密码,电子邮件,图像还不够。因此,我决定将UID用作每个用户的密钥,并将其存储在数据库中,以便稍后使用。因此,如果用户在任何其他时间登录,我想检索此数据,这些数据将不会再次更改,因此setvalue()并添加侦听器以进行更改不会与我一起工作,因此我对此进行了编码
Query q = FirebaseDatabase.getInstance().getReference().child("users").equalTo(FirebaseAuth.getInstance().getCurrentUser().getUid());
我下一步该怎么办?
该指南未说明有关equalto(),如何使用查询或如何在没有侦听器的情况下检索数据的任何信息
谢谢
Firebase检索查询是异步的,没有同步的“正式”方式(没有回调/侦听器)。
为什么它是异步的?
由于Firebase是基于云的,因此它需要进行网络调用以执行任何CRUD操作。
现在有了Query
对象,您只需将附加一个ValueEventListener
并在中接收数据DataSnapShot
。
注意:与相对,addListenerForSingleValueEvent(listener)
仅查询一次addValueEventListener(listener)
。
它看起来像这样:
q.addValueEventListener(
new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// for example: if you're expecting your user's data as an object of the "User" class.
User user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// read query is cancelled.
}
});
有关更多信息,请参考此链接
编辑:事件侦听器最初被触发一次,然后在您查询的数据发生更改时被触发。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句