Firebase友谊节点如何仅使用uid显示用户数据

时间:2018-12-20 21:25:58

标签: javascript firebase react-native

使用此数据库结构显示用户朋友列表时:

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(这会导致很多不需要的$$$下载)

干杯!

1 个答案:

答案 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;
}

对每个朋友执行此操作,因此,您只下载每个朋友而不是每个用户的数据。