Firebase查询节点

时间:2017-10-14 06:42:33

标签: angular firebase firebase-realtime-database angularfire2

一个问题,我该怎么做这个查询?

模式

-|conversations
-|$uid
    -|fromID
        -|message
            name: string
            date: date
            body: string
            like: boolea

如果用户是邮件的发送者,则关注者都会被收集到conversations/$uid,并且所关注的用户都在conversations/ANYTHING/$uid

我可以这样列出关注者this.followers = this.af.database.list(conversations/${this.currentAuth.uid});

但是,跟随用户?

添加此图表以获得更好的解释 enter image description here

2 个答案:

答案 0 :(得分:1)

因此,使用database.list,您将获得一组消息。

对于列表中的每条消息,您都会添加元数据。

您可以使用密钥获取邮件的密钥(以及后面跟随的用户ID):"$key"

示例:

const message = this.af.database.list(conversations/${this.currentAuth.uid});

message[0].$key将为您提供所关注用户的user_id。

编辑1:

我真的不明白你想要做什么。但你在评论中建议的是:

If you use Lodash

这将通过fromID:

为您提供与this.currentAuth.uid的所有对话
_.filter(
    this.af.database.list(conversations),
    function (o) => { 
        return Object.keys(o).indexOf(this.currentAuth.uid) != -1 
    }

答案 1 :(得分:0)

解决方案是添加两个节点。关注者并跟踪每个配置文件以保存所有密钥。