几天以来,我在网络应用程序上做自己想做的事情(角度+ firebase)时遇到了困难。
以下是一个示例(这是一个聊天室):
messages
|__ 1
|__ author: "foo"
|__ message: "hello world"
|__ playerExcluded: "foo2"
|__ 2
|__ author: "foo2"
|__ message: "hello world"
|__ playerExcluded: "foo"
我想列出currentUser!= playerExluded的所有消息(用户可以看到除他以外的消息以外的所有消息),并且它必须是动态的。
我知道使用Firebase数据库查询无法做到这一点,这就是为什么我开始查看云功能但没有“读取”触发器的原因。
让我们想象一下查询是可能的,就像这样:
firebase.database().ref('/messages').orderByChild('playerExcluded').differentTo(playerUsername)
有没有办法以动态方式使用Firebase?
答案 0 :(得分:1)
正如您所发现的,对于Cloud Functions,确实没有onRead
数据库触发器。您可以通过building your own HTTPS function, which you then call from the app来模仿行为。
但是请注意,实时数据库的Admin SDK(您在Cloud Functions中使用)也不允许您要查询。因此,您仍然必须加载所有消息并过滤代码中排除的消息。
答案 1 :(得分:1)
您要在playerExcluded != playerUsername
处获取所有消息。因此,我没有为您提供完整的代码,而只是为您提供了完成代码的想法。
首先,通过messages
检索整个listenerForSingleValueEvent
节点。
然后通过foreach loop
遍历其子级。然后检查playerExcluded
是否匹配playerUsername
,如果匹配,则忽略continue
的这一迭代,如果不匹配,则将其保存在Array
中。
一天结束时,您将获得Array
的所有必需数据。