实现一个评论点赞功能,使用redis记录点赞用户点赞状态 定时任务持久化到数据库。
那么:
获取评论列表和获取点赞状态是使用两个接口吗?(这样的话 前端对这两个数据进行整合?)
还是获取评论列表之前 将redis持久化到数据库,在返回给前端
或者是其他什么方法么 多谢各位大佬
多谢
我也是偏向写在一个接口里面的, 那这样我需要查询数据库里的评论和redis里的当前用户点赞状态做整合,通常的处理方法是通过遍历对比评论id,把点赞状态存放在评论里吗。
```
package main
import (
"fmt"
)
type Comment struct {
Id uint
UserId uint
Content string
IsLike bool
}
type CommentLike struct { //存在即为点赞状态
Id uint
CommentId uint
// UserId uint //应该找出当前符合当前userid的数据
}
func main() {
coms := []Comment{ //数据库里的评论列表
{Id: 1, UserId: 1, Content: "com1"},
{Id: 2, UserId: 2, Content: "com2"},
}
comLike := []CommentLike{ //redis里当前用户的点赞状态
{1, 1}, //评论id为1的是点赞状态
}
for _, cl := range comLike { //是这样整合数据吗
for i := 0; i < len(coms); i++ {
if cl.CommentId == coms[i].Id {
coms[i].IsLike = true
}
}
}
fmt.Printf("coms: %v\n", coms)
}
```
#3
更多评论
再下的一点拙见:
- “获取评论列表和获取点赞状态是使用两个接口吗?“这个问题你应该和前端人员讨论,我偏向喜欢使用一个接口。
- “还是获取评论列表之前 将redis持久化到数据库,在返回给前端”,同步触发持久化到数据库的逻辑,不应该写在接口里,应该想办法异步实现。
#2