我想使用Firebase设置2人聊天。 用户可以在彼此“喜欢”时聊天。我在我自己的SQL服务器上处理'喜欢',但我想使用Firebase进行聊天。
这是虚拟数据,最终会看起来像这样。
{
"admins": {
"chat1": {
"user_id_1": {
"active": true
},
"user_id_2": {
"active": true
}
}
},
"chats": {
"chat1": {
"messages": {
"random_id": {
"message": "first message",
"sender": "user_id_1"
}
}
}
}
}
这些是我的规则:
{
"rules": {
"admins": {
"$chatAdmin": {
}
},
"chats": {
"$chat": {
".read": "root.child('admins').child($chat).hasChild(auth.uid)",
".write": "root.child('admins').child($chat).hasChild(auth.uid)"
}
}
}
}
所以我想要的是每次两个用户都是'匹配',所以他们彼此“喜欢”。我想在/chats/{sha1(uid1 + uid2)}
中创建聊天,只允许这2个用户访问,读取和写入。
答案 0 :(得分:0)
稍后感谢我,哈克>
只要firebase不会更改uid格式
export async function sendMessage(myUid, otherUid, content) {
const conversationId = createConversationId(myUid, otherUid)
const data = { content, timestamp: new Date().getTime(), authorUid: myUid }
await firebase.database().ref(`conversations/${conversationId}`).push(data)
return
}
export function createConversationId(uid1, uid2) {
return uid1 > uid2 ? `${uid2}${uid1}` : `${uid1}${uid2}`
}
另请参见