使用 Firebase 高效查询 1:1 个私人房间
Querying 1:1 private rooms efficiently with Firebase
我正在使用 Firebase 并尝试建立 1:1 对话。对于房间,我使用了这样的结构:
- rooms
- "user1_user2" // roomName
- timestampedId1
- message: "hello"
- sender: "user2"
- timestampedId2
- message: "hey"
- sender: "user1"
- "user2_user3"
- timestampedId3
- message: "Mew"
- sender: "user3"
对于房间名称,我使用了(我从这个 得到的):
let roomName = (from<to ? from+"_"+to : to+"_"+from)
但是,现在我正在尝试检索,但我感到困惑。使用 Firebase,创建和检索私人房间的正确结构是什么?
我应该在 'roomName' 节点中单独存储 'from' 和 'to' 吗?但如果是这样,那么我如何比较它们并将它们列为降序时间戳(从新到旧)?我认为应该有一种方法可以通过一个请求来完成。但是我该如何使用这种 'roomName' 方法呢?或者有没有其他更好的方法来实现它?
let roomRef = Firebase(url: self.url + "/rooms")
// some query?
.observeEventOfType(.Value, withBlock: { details in
})
处理这种情况的正确方法是什么?我应该完全改变结构还是有办法正确查询它?
我会按如下方式构建它并具有三个节点:roommembers、chat 和 lastmessages:
roommembers
user1iduser2id
user1id: true
user2id: true
chat
user1iduser2id
-KIyPwdDfAA6GxMlwLJB
message
userid
etc
(-KIyPwdDfAA6GxMlwLJB is a childByAutoId() which is also your timestamp)
lastmessages
user1id
user1iduser2id
lastmessage
lastuser
etc.
user2id
user1iduser2id
lastmessage
lastuser
etc.
我正在使用 Firebase 并尝试建立 1:1 对话。对于房间,我使用了这样的结构:
- rooms
- "user1_user2" // roomName
- timestampedId1
- message: "hello"
- sender: "user2"
- timestampedId2
- message: "hey"
- sender: "user1"
- "user2_user3"
- timestampedId3
- message: "Mew"
- sender: "user3"
对于房间名称,我使用了(我从这个
let roomName = (from<to ? from+"_"+to : to+"_"+from)
但是,现在我正在尝试检索,但我感到困惑。使用 Firebase,创建和检索私人房间的正确结构是什么?
我应该在 'roomName' 节点中单独存储 'from' 和 'to' 吗?但如果是这样,那么我如何比较它们并将它们列为降序时间戳(从新到旧)?我认为应该有一种方法可以通过一个请求来完成。但是我该如何使用这种 'roomName' 方法呢?或者有没有其他更好的方法来实现它?
let roomRef = Firebase(url: self.url + "/rooms")
// some query?
.observeEventOfType(.Value, withBlock: { details in
})
处理这种情况的正确方法是什么?我应该完全改变结构还是有办法正确查询它?
我会按如下方式构建它并具有三个节点:roommembers、chat 和 lastmessages:
roommembers
user1iduser2id
user1id: true
user2id: true
chat
user1iduser2id
-KIyPwdDfAA6GxMlwLJB
message
userid
etc
(-KIyPwdDfAA6GxMlwLJB is a childByAutoId() which is also your timestamp)
lastmessages
user1id
user1iduser2id
lastmessage
lastuser
etc.
user2id
user1iduser2id
lastmessage
lastuser
etc.