老师您好,我有个关于云数据库的问题请教下
来源:10-1 课程回顾
xphao
2020-04-29
我现在有这么一个需求,就是我有三个集合,A集合存放的是文章,B集合存放的是用户数据,当用户点赞一篇文章,就把用户openid以及文章包含的数据存入C集合。
操作一:当我获取该文章点赞人数,就去查C集合里面该文章id的出现次数。
操作二:当我获取用户喜欢文章数以及展示对应文章内容,就去查C集合含有对应用户openid的数据。
操作三:我经常需要去刷新文章点赞人数,比如用户每次切换到自己喜欢文章页面,这里展示的文章的点赞数我就要去刷新一次,当用户喜欢30篇文章,我就要去调用30次操作一。
我想请问下老师,我上面的操作逻辑有问题吗?有可以优化的地方吗?
文章数量以及用户量都是在几十到几百的数据量吧。
2回答
-
谢成
2020-04-29
1、查询数量可以用count来做: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/collection/Collection.count.html
也就是说当用户喜欢的文章有30篇,也只是在操作一中去count一次,不是30次,这样能效率高一些。。
2、文章的点赞数,我觉得可以直接存在文章的集合中。因为如果参考目前微博的功能,点赞数一般是和文章一同显示的,这样只要查询这一个集合就可以了。每次有用户点赞,这个字段就+1,要用inc来做: https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/database/command/Command.inc.html 因为具有原子性,多个用户同时点赞不会相互干扰。
另外如果还需要保存是哪个用户点了赞的话,可以像你所做的,在C中存一份,但这个C只有在用户点击去看谁点了赞才去查,而不是每篇文章都去查,这样能效率高一些。
112020-04-29 -
xphao
提问者
2020-04-29
老师,我再梳理一遍我的问题吧。
假设有两个页面,a页面和b页面。
(1)a页面是展示文章的,文章会显示点赞未点赞两种状态,要是按老师您说的把点赞数量直接和文章数据一起存放在A集合,那我应该怎么判断用户当前是否点赞过该文章?还是通过把文章数据和用户openid一起放入C集合,展示文章时再拿文章id和openid出来判断吗?
(2)b页面是展示用户喜欢文章列表的,会有文章的简介以及文章对应点赞数量,为了确保用户及时获取到准确的数据,所以我的想法是每当用户切换到该页面,也就是生命周期onshow()就会去获取每个文章对应的点赞数量。如果当前用户喜欢30篇文章,我要去刷新一遍该用户喜欢文章显示的点赞数量,是只能去调用30次我问题里提及的操作一吗?还是说有更合适的做法?
问题比较长,麻烦老师了~
类似下图的效果
00
相似问题