两次生两个孩子并让所有孩子一次性生活有什么区别?

时间:2017-06-05 17:28:49

标签: android firebase firebase-realtime-database

假设我有这样的数据存储。

Firebase database

但我只想要usernameprofileImage。在这种情况下我应该使用什么方法?

第一个是两次查询数据。像这样......

usersRef.child(uid).child("username").addValueListener...    
String username = dataSnapshot.getValue(String.class);    
usersRef.child(uid).child("profileImage").addValueListener...
String profileImage = dataSnapshot.getValue(String.class);

第二个是让所有孩子只有一次,只获得我想要的数据。像这样......

 - userRef.addValueListener...
 User user = new User();
datasnapshot.getValue(user.class)
String username = user.username;  
String profileImage = user.profileImage;

1 个答案:

答案 0 :(得分:0)

单独调用(在此方案中)的开销相当小。请参阅http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786

检索额外数据的开销取决于额外数据的大小。在这种情况下看起来相当大,特别是因为你在那里有嵌套集合。这是Firebase建议展平数据,将所有嵌套集合移动到其自己的顶级节点(userFollowersuserFollowingsuserNoficationTokens)的众多原因之一。

为获得最佳性能,您应该有一个包含要在应用中显示的数据的列表。因此,如果您有一个显示用户名+图像列表的屏幕,您应该有一个列表,其中只包含数据库中的数据。在这种情况下,你会发现你正在复制数据,但由于它,你获得了几乎无限的可扩展性。