我们如何在Firebase中将特定用户的消息发送给另一个用户

问题描述 投票:2回答:1

我希望从特定用户发送消息到另一个用户。我无法做到这一点。当我使用以下代码时,我从接收器获取消息。我需要的是将消息特别recieverid发送到特定的senderid

我的数据库快照

enter image description here

这是我的代码:

Database.database().reference().child("chats")
    .queryOrdered(byChild: "receiverid")
        .queryEqual(toValue: "xEdACTcUWeOwrdIqjxeP5t5y4Kg2")
            .observe(.childAdded, with: { snapshot in
                let msgDict = snapshot.value as! [String: Any]
                print(msgDict)
            })
swift firebase firebase-realtime-database
1个回答
1
投票

使用Firebase时,您应该构建数据以满足视图的需要。

看起来你要做的是基于2个属性执行查询,而实时数据库还不能这样做。我建议您更改数据结构。使用您的senderId作为每次聊天的关键。这样你会有这样的事情:

"chats"{
    "-L1RW456789":{
        "messageKey":{
        "name":"ddddd",
        "receiverid":"xEdACTcUWeOwrdIqjxeP5t5y4Kg2",
        "sender_id":"-L1RW456789",
        "text":"Hello World"
        },
        "message2Key":{
        "name":"eeeee",
        "receiverid":"xEdAdasd23123",
        "sender_id":"-L1RW456789",
        "text":"How are you?"
        }
    }
}

(您现在可以删除“sender_id”属性,因为现在可以通过获取消息的父节点的密钥来访问它)并且您可以像这样运行查询:

Database.database().reference().child("chats").child("-L1RW456789")
    .queryOrdered(byChild: "receiverid")
        .queryEqual(toValue: "xEdACTcUWeOwrdIqjxeP5t5y4Kg2")
            .observe(.childAdded, with: { snapshot in
                let msgDict = snapshot.value as! [String: Any]
                print(msgDict)
            })
© www.soinside.com 2019 - 2024. All rights reserved.