请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

老师您好,我有个关于云数据库的问题请教下

我现在有这么一个需求,就是我有三个集合,A集合存放的是文章,B集合存放的是用户数据,当用户点赞一篇文章,就把用户openid以及文章包含的数据存入C集合。

操作一:当我获取该文章点赞人数,就去查C集合里面该文章id的出现次数。

操作二:当我获取用户喜欢文章数以及展示对应文章内容,就去查C集合含有对应用户openid的数据。

操作三:我经常需要去刷新文章点赞人数,比如用户每次切换到自己喜欢文章页面,这里展示的文章的点赞数我就要去刷新一次,当用户喜欢30篇文章,我就要去调用30次操作一

我想请问下老师,我上面的操作逻辑有问题吗?有可以优化的地方吗?
文章数量以及用户量都是在几十到几百的数据量吧。

正在回答 回答被采纳积分+3

2回答

谢成 2020-04-29 15:34:17

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只有在用户点击去看谁点了赞才去查,而不是每篇文章都去查,这样能效率高一些。


1 回复 有任何疑惑可以回复我~
  • 提问者 xphao #1
    老师,我补充了问题,麻烦您有空时回复下~
    回复 有任何疑惑可以回复我~ 2020-04-29 19:08:07
提问者 xphao 2020-04-29 19:07:25

老师,我再梳理一遍我的问题吧。


假设有两个页面,a页面和b页面。


(1)a页面是展示文章的,文章会显示点赞未点赞两种状态,要是按老师您说的把点赞数量直接和文章数据一起存放在A集合,那我应该怎么判断用户当前是否点赞过该文章?还是通过把文章数据和用户openid一起放入C集合,展示文章时再拿文章id和openid出来判断吗?


(2)b页面是展示用户喜欢文章列表的,会有文章的简介以及文章对应点赞数量,为了确保用户及时获取到准确的数据,所以我的想法是每当用户切换到该页面,也就是生命周期onshow()就会去获取每个文章对应的点赞数量。如果当前用户喜欢30篇文章,我要去刷新一遍该用户喜欢文章显示的点赞数量,是只能去调用30次我问题里提及的操作一吗?还是说有更合适的做法?


问题比较长,麻烦老师了~

类似下图的效果

https://img1.sycdn.imooc.com/szimg/5ea95f6209137f2906040783.jpg

https://img1.sycdn.imooc.com/szimg/5ea95f6f09493f8b08280518.jpg


0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信