从Firebase实时数据库中仅获取当前用户数据

时间:2018-08-03 14:12:48

标签: javascript firebase firebase-realtime-database

我想从我的Firebase实时数据库中获取数据,但是我只想获取包含当前用户UID的数据。

请参见该图以获取数据库结构:

picture of the db, explains the problem

我无法从文档https://firebase.google.com/docs/database/web/lists-of-data

中了解到Firebase查询/排序的功能。
// Gets all chats
return firebase.database().ref(`chat`);

// would like to do something like this 
let userId = firebase.auth().currentUser.uid
firebase.database().ref('/chat/' + userId).once('value')

将感谢您提供帮助或解决此问题的提示。

1 个答案:

答案 0 :(得分:0)

无法直接基于UID查询聊天,因为键 end 带有UID,并且不以它们开头。这是预期的行为,如果您以尝试的方式解析密钥,我会认为这是一种代码味道。

请保留每个用户的聊天ID列表。

userChats
  uid1
    chatid1: true
    chatid2: true
  uid2
    chatid2: true

这样,您可以从/users/$uid加载用户的聊天ID,然后加载每个单独的聊天。后者的速度不像某些开发人员所想的那样慢,因为Firebase通过单个连接流水线处理这些请求。参见http://stackoverflow.com/questions/35931526/speed-up-fetching-posts-for-my-social-network-app-by-using-query-instead-of-obse/35932786#35932786