gpt4 book ai didi

firebase - 如何在 Firebase 中的用户之间共享数据?

转载 作者:行者123 更新时间:2023-12-04 02:21:08 25 4
gpt4 key购买 nike

在这样的数据库中:

{
"users": {
"simplelogin:213": {
"provider": "password",
"name": "bobtony",
"friends": {
"Andrew Lee": true,
"James Tamplin": true
}
},
"twitter:123": {
"provider": "twitter",
"name": "Andrew Lee",
"friends": {}
},
"facebook:456": {
"provider": "facebook",
"name": "James Tamplin",
"friends": {}
}
},
"messages": {
"simplelogin:213": {
"-JkpwAnieKjQVsdtPD4m" : {
"content" : "Hello World"
}
}
}
}

考虑到这个笨蛋把 Andrew Lee 加为他的 friend ,Andrew Lee 怎么能阅读笨蛋消息?一个类似的问题问 here ,但没有很好的解决方案。我知道我可以有一个规则来允许阅读消息,但“ friend ”用户只是不知道阅读它们的路径。

更新:花了一些时间思考后,我得到:

{
"users": {
"user1": {
"name": "bobtony",
"partners": {
"user2": {
"accepted": true
}
},
"customers":{
"customer1": true,
"customer2": true
// hundreds of clients
},
"orders":{
"order1": true,
"order2": true
// hundreds of orders
}
}
},
"customers": {
"customer1": {
"name" : "james"
}
}
}

那么,拥有这样的东西会好吗?这样我就可以遍历我自己的客户和我的合作伙伴客户。

最佳答案

如果您像这样设置数据:

{
"users": {
"simplelogin:213": {
"provider": "password",
"name": "bobtony",
"friends": {
"twitter:123": "Andrew Lee",
"facebook:456": "James Tamplin"
},
"messages": {
"sent" : {
"-JkpwAnieKjQVsdtPD4m" : {
"content" : "Hello World",
"uid" : "twitter:123"
}
}
}
},
"twitter:123": {
"provider": "twitter",
"name": "Andrew Lee",
"friends": {
"simplelogin:213": "bobtony"
},
"messages": {
"received" : {
"-JkpwAnieKjQVsdtPD4m" : {
"content" : "Hello World",
"uid" : "simplelogin:213"
}
}
}
},
"facebook:456": {
"provider": "facebook",
"name": "James Tamplin",
"friends": {
"simplelogin:213": "bobtony"
}
}
}
}

您可以设置规则,如果发送用户的 uid 在接收用户的“/friends”中,则一个用户可以写入另一个用户的 /messages/received

{
"rules": {
"users" : {
"$user_id" : {
".read": "auth.uid === $user_id",
".write": "auth.uid === $user_id",
"messages" : {
"received" : {
".write" : "root.child('users').child($user_id).child('friends').hasChild(auth.uid)"
}
}
}
}
}
}

您需要使用 Firebase.transaction() 来确保只有在写入 sent 成功时才能成功写入 received

关于firebase - 如何在 Firebase 中的用户之间共享数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29306489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com