Structuring data for chat app in Firebase

后端 未结 2 1531
天涯浪人
天涯浪人 2021-01-31 21:29

Im following Firebase guide to structuring data for a chat app. They suggest the structure as seen below.

{
  // Chats contains only meta info about each conver         


        
2条回答
  •  广开言路
    2021-01-31 22:08

    How do I structure my user data so that I can easily display a list of all of the chats they are part of and for each one of them display the last message and timestamp.

    Change the chats structure a tad by adding users who are in the chat node

    "chats": {
        "one": {
          "title": "Historical Tech Pioneers",
          "lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
          "timestamp": 1459361875666
          users
           uid_1: true
           uid_3: true
        },
        "two": { ... },
    

    Then you can deep query for all chats a particular user is part of - this will return the chats uid_3 is involved in

    chatsRef.queryOrderedByChild("users/uid_3").queryEqualToValue(true)
         .observeSingleEventOfType(.Value, withBlock: { snapshot in
    
         //.Value can return multiple nodes within the snapshot so iterate over them
         for child in snapshot.children {
              let lastmsg = child.value["lastMessage"] as! String
              let timestamp = child.value["timestamp"] as! String
              print(lastmsg)
              print(timestamp)
         }     
    })
    

    Note that each firebase user has a discreet user id obtained when the user is created via auth.uid. This should (generally) be used as the key for each user.

提交回复
热议问题