Json Firebase中用于聊天应用程序的一对一对话结构
我正在尝试使用Firebase构建一对一对话节点,正如建议的那样,我正在尝试存储显示特定用户对话所需的屏幕所有数据:Json Firebase中用于聊天应用程序的一对一对话结构,json,swift,firebase,firebase-realtime-database,nosql,Json,Swift,Firebase,Firebase Realtime Database,Nosql,我正在尝试使用Firebase构建一对一对话节点,正如建议的那样,我正在尝试存储显示特定用户对话所需的屏幕所有数据: "conversations": { "XDJKljQI8JeTk6xkyMfvMqbwbQR4": { "lastMessage": "my name is john", "timestamp": 1467849600000, "users": { "XDJKljQI8JeTk6xkyMfvMqbwbQR2
"conversations": {
"XDJKljQI8JeTk6xkyMfvMqbwbQR4": {
"lastMessage": "my name is john",
"timestamp": 1467849600000,
"users":
{
"XDJKljQI8JeTk6xkyMfvMqbwbQR2": {
"name" : "name",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "US",
"seen" : false
},
"0CcKvNkOm5fVqLSNMBcdZV8Hx1c2": {
"name" : "Anna",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "DE",
"seen" : true
}
}},
"XDJKljQI8JeTk6xkyMfvMqbwbQR5": {
"lastMessage": "my name is john",
"timestamp": 1467849600000,
"users":{
"XDJKljQI8JeTk6xkyMfvMqbwbQR2": {
"name" : "Dev",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "DK",
"seen" : false
},
"XDJKljQI8JeTk6xkyMfvMqbwbQR3": {
"name" : "Chris",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "US",
"seen" : false
}
}
}
}
}
我的目标是获取给定用户的对话,并在Facebook messenger中显示一个类似的单元格(最后一条消息、时间、所见、其他用户的图像和姓名)
我的问题是:
K.FirebaseRef.conversations
.queryOrderedByChild("users")
.queryStartingAtValue("0CcKvNkOm5fVqLSNMBcdZV8Hx1c2")
.queryEndingAtValue("0CcKvNkOm5fVqLSNMBcdZV8Hx1c2")
.observeSingleEventOfType(.Value, withBlock:{ snapshot in
print(snapshot)
})
还尝试:
K.FirebaseRef.conversations
.queryOrderedByChild("users")
.queryEqualToValue("0CcKvNkOm5fVqLSNMBcdZV8Hx1c2")
.observeSingleEventOfType(.Value, withBlock:{ snapshot in
print(snapshot)
})
它应该给我一个对话,其中用户的给定id部分,我做错了什么
编辑:
"conversations": {
"user1_user2": {
"lastMessage": "my name is john",
"timestamp": 1467849600000,
"users":
{
"user1": {
"name" : "John",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "US",
"seen" : false
},
"user2": {
"name" : "Dev",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "DE",
"seen" : true
}
}},
"user1_user3": {
"lastMessage": "my name is john",
"timestamp": 1467849600000,
"users":{
"user1": {
"name" : "John",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "US",
"seen" : false
},
"user3": {
"name" : "Chris",
"profileImage" : "https://firebasestorage.googleapis.com",
"country_code": "US",
"seen" : false
}
}
}
}
}
不要使用“随机”房间ID,而是将房间ID基于其中的用户。请参阅@FrankvanPuffelen我已经采用了您的方法(请参阅上面的编辑),但仍然无法找到获取给定用户所有对话的方法,例如如何获取user1的所有对话?在NoSQL中,您通常根据应用程序使用数据的方式对数据进行建模(请参阅本文)。因此,如果你的应用程序需要一个用户的所有对话列表,考虑为每个用户存储所有对话的列表:代码>用户/对话/ />代码>,而不是使用“随机”房间ID,将房间ID放在用户的基础上。请参阅@FrankvanPuffelen我已经采用了您的方法(请参阅上面的编辑),但仍然无法找到获取给定用户所有对话的方法,例如如何获取user1的所有对话?在NoSQL中,您通常根据应用程序使用数据的方式对数据进行建模(请参阅本文)。因此,如果你的应用程序需要一个用户的所有对话列表,考虑为每个用户存储所有对话的列表:代码>用户/对话/ < /代码>。