找到在 firebase 和 flutter 中实现 'like' 逻辑的最佳方法
Find the best way to implement a 'like' logic in firebase and flutter
我有一个问题。
我开发了一个允许用户点赞任务的功能。
例如:
用户可以点击心形图标。
如果他点击图标,颜色会改变,下面的数字会增加 (1 => 2)。
现在我想在 firebase 中构建我的数据库结构,但我不确定什么是最好的方法(为了性能...)。
我的想法:
我想创建一个 task_id,我可以在其中添加标题、描述、查看者总数等...
在 task_id 中,我还放了一个 user_id 来检查用户之前是否对任务进行了投票。
要检查用户是否包含在我想要使用 collectionGroup 的任务中。
我是 firebase 的新手,我不知道性能受到了多大的影响。
也许有人会找到其他或更好的方法来检查用户是否已对任务投票。
非常感谢 (:
我对您的任务文档模型的建议是使用 Firebase documentation:
建议的子集合
{
"taskId1": {
"description": "Lorem ipsum dolor",
"title": "Task 1",
"totalLikes": 2,
"likes": {
"userId1": {
"liked": 1,
"datetime": "2021-08-04T13:33:03.969Z"
},
"userId2": {
"liked": -1,
"datetime": "2021-08-09T21:47:03.857Z"
}
}
}
}
要获得点赞总数变量,您可以在用户点赞时更新计数器,编写适当的安全规则以确保点赞计数匹配。
{
"rules": {
"likes": {
"$thing": {
"$userId": {
".write": "auth.uid === $uid",
".validate": "data.isNumber() && data.val() >= -1 && data.val() <= 1"
}
}
}
}
}
我有一个问题。 我开发了一个允许用户点赞任务的功能。
例如:
用户可以点击心形图标。 如果他点击图标,颜色会改变,下面的数字会增加 (1 => 2)。
现在我想在 firebase 中构建我的数据库结构,但我不确定什么是最好的方法(为了性能...)。
我的想法:
我想创建一个 task_id,我可以在其中添加标题、描述、查看者总数等... 在 task_id 中,我还放了一个 user_id 来检查用户之前是否对任务进行了投票。 要检查用户是否包含在我想要使用 collectionGroup 的任务中。
我是 firebase 的新手,我不知道性能受到了多大的影响。
也许有人会找到其他或更好的方法来检查用户是否已对任务投票。
非常感谢 (:
我对您的任务文档模型的建议是使用 Firebase documentation:
建议的子集合{
"taskId1": {
"description": "Lorem ipsum dolor",
"title": "Task 1",
"totalLikes": 2,
"likes": {
"userId1": {
"liked": 1,
"datetime": "2021-08-04T13:33:03.969Z"
},
"userId2": {
"liked": -1,
"datetime": "2021-08-09T21:47:03.857Z"
}
}
}
}
要获得点赞总数变量,您可以在用户点赞时更新计数器,编写适当的安全规则以确保点赞计数匹配。
{
"rules": {
"likes": {
"$thing": {
"$userId": {
".write": "auth.uid === $uid",
".validate": "data.isNumber() && data.val() >= -1 && data.val() <= 1"
}
}
}
}
}