我的Firebase数据库的结构是:
users: [
{userId: {...}}, // Private data for specific user
...
],
likes: [ // Everybody has access to it
goodsId: [111, 222, 333, 444] // Users' ids
]
商品和商品的类别存储在远程服务器上,每次用户浏览商品目录或打开某些商品卡时,axios就会获取它们。我想将“点赞”存储在Firebase中而不是存储在远程服务器上。是正确的还是没有必要这样做?我还不知道是否将实时功能用于“点赞”,以及是否需要此功能。而且,我认为每个“赞”请求都是请求,并且我的Firebase配额将比平时快用完限制。 这样的结构是否可以让我迅速解决性能问题,以查找当前用户为他打开或搜索阵列的每个商品设置“喜欢”是否会导致性能问题(如您所知,可能会有大量用户)?>
或者,maby从一开始就将“喜欢”存储在Firebase中是个坏主意,我应该只在其中存储非常具体的数据,因为我有配额限制-首先和第二个-我不需要每个都具有实时功能我的应用程序的实体。我只需要那些我想在reactjs Web应用程序的管理部分中实时查看的实体:订单,聊天等...
答案 0 :(得分:2)
您可能具有以下结构:
{
"users":
{
"id1":{}
},
"categories":{"cat1":{}}
"likes":
{
"cat1"
{
"id1":true
}
}
}
这样一来,您可以确保一个用户只能“赞”一次,并且在数据库规则中,您可以为任何auth用户设置读取权限,但只能为您的auth id子对象设置写入权限,在这种情况下,id1
参见{ {3}}
要检查喜欢人数,您可以避免获得所有喜欢,在类别子项cat1
上有一个“ likeCount”字段,该字段具有一个Cloud Function,该功能每次用户喜欢某个类别时都会更新喜欢人数,请参见https://firebase.google.com/docs/database/security/securing-data
也请查看此快速入门:https://firebase.google.com/docs/functions/database-events#trigger_a_database_function
希望有帮助! ;)