使用此数据库结构显示用户朋友列表时:
class MyActivity : AppCompatActivity() {
private val useDarkTheme: Boolean = false
private var twoPane: Boolean = false
override fun onCreate(savedInstanceState: Bundle?) {
useDarkTheme = shouldUseDarkTheme()
setTheme(if (useDarkTheme) R.style.MyDarkTheme else R.style.MyLightTheme)
super.onCreate(savedInstanceState)
setContentView(R.layout.md)
// savedInstanceState will be null only the first time the Activity is created
if (savedInstanceState == null) {
supportFragmentManager.beginTransaction()
.replace(R.id.master_container, MyFragment())
.commit()
}
twoPane = findViewById<View>(R.id.detail_container) != null
setSupportActionBar(findViewById(R.id.my_toolbar))
}
override fun onStart() {
super.onStart()
if (useDarkTheme != shouldUseDarkTheme()) {
recreate()
}
}
private fun shouldUseDarkTheme(): Boolean =
PreferenceManager.getDefaultSharedPreferences(this).getBoolean("preference_a", false)
}
根据用户的uid(实际上是示例中的键而不是userX)从用户节点显示用户数据的最佳方法是什么。
因此,对于 user1 ,他的朋友列表中应显示 user3 和 user4 以及其 username 和 profilePic 例如...我无法将注意力集中在一个好的解决方案上,而不是下载整个用户节点并找到一个匹配项以列出uid(这会导致很多不需要的$$$下载)
干杯!
答案 0 :(得分:1)
您需要一个包含用户数据的单独表。
users:
user1:
username: bob
email: xx@yy.com
etc.
user2:
username: jane
email b@a.com
然后,您可以像这样通过uid查询用户对象:
firebase.database().ref('/users').child('user1').once("value", snapshot => {
let userData = snapshot.val();
let username = userData.username;
}
对每个朋友执行此操作,因此,您只下载每个朋友而不是每个用户的数据。