关于点赞行为设计···

自建新闻从无到有。当然,评论、点赞也是一步步来的。

关于点赞的设计,也是会挖过坑,也把坑给填了。

需求是这样子的:点赞有【好球,警告】两个选项,点了可以取消,取消之后可以再点,也可以直接从好球直接切换到警告,同时好球和警告数也要跟着更新

采用数据库:mongodb,关于字段设计,一开始我是这样子的:

support : Number , 用来记录总的好球数

warning: Number 用来记录总的警告

supportList: Array 用来存有点赞行为的用户id,大概就是 [{uid:‘12345‘,type:1},{uid:‘123‘,type:2}]

---------------------------------------------------------------------------------------------------------

第一次点好球或者警告,support,warning就都是增1啦,而supportList的话,我就直接把用户的id和点赞类型push到了数组,然后的然后就是坑来了:

现在是用户要取消点赞,那是不是意味着我要到supportList遍历对象并移除有关该用户的键值对,如果是要更新的话,也是要遍历后再更新保存,想到这样子我就头大了。。。。

然后,我就想到···· 既然用户的id是唯一的,那这样子的话,我不就可以把用户的id作为键值对的键,然后行为作为值呢,然后字段也就变成了这样子啦:

support : Number , 用来记录总的好球数

warning: Number 用来记录总的警告

supportDict Object 用来存用户的点赞行为,形如{‘5265‘:1,‘5234‘:2},

用键值对来存用户的点赞行为效率是比数组对象要高很多的【是不是!】

首先是点赞行为【1为好球,2为警告】如{‘5265‘:1,‘5234‘:2}就表示用户5265点了好球,5234点了警告;

接下来就是取消行为【0为取消】,假设用户5265取消点好球,就直接更新{‘5265‘:0,‘5234‘:2},用0来表示当前没有行为,虽然可以移除5265这个字段,但不移除的话,我们就可以通过读取该字段下的键,知道用户曾经有点赞行为;

更新行为和取消行为类似,也是去更新字段的值;

其他需要修改的就是字段support、warining的值,如加1,减1;

-----------------------------------------------------

在查询点赞行为时,客户端会附带uid的参数;此时只要在supportDict上查询是否有该键,同时返回该键的操作行为即可,就不用像之前的设计还要去遍历数组,效率一下子就提升了。

-----------------------------------------------------

我的理解就是这样子啦。虽然我知道这篇文章会很少人看到,但是如果有人看到的话,可以和我分享下关于点赞更好的设计啦。

时间: 2024-10-26 05:08:06

关于点赞行为设计···的相关文章

朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素

朱晔的互联网架构实践心得S1E9:架构评审一百问和设计文档五要素 [下载文本PDF进行阅读] 本文我会来说说我认为架构评审中应该看的一些点,以及我写设计文档的一些心得.助你在架构评审中过五关斩六将,助你写出能让人收藏点赞的设计文档. 技术架构评审 架构评审或技术方案评审的价值在于集众人的力量大家一起来分析看看方案里是否有坑,方案上线后是否会遇到不可逾越的重大技术问题,提前尽可能把一些事情先考虑到提出质疑其实对项目的健康发展有很大的好处.很多公司都有架构评审委员会都有架构评审的流程,做业务的兄弟要

腾讯时尚网页精彩专题设计欣赏

发现近两年腾讯在网页设计和手机界面设计上很下功夫,做的东西越来越亮眼,经常去站酷的朋友应该也会发现,在站酷发作品的腾讯设计师越来越多,而且都很牛,确实值得我们学习. 腾讯时尚有个"服饰时尚最佳穿衣榜"的版块,以前闲来无事或者想找点儿时尚有关的灵感会点开看一看,扁平化.几何图形,各种精美的网页设计应经开始走起,下面收集了一些这个办款常用的一些漂亮的设计模板,设计感很强,画面也很有张力,共同学习一下. 红色版 绿色版 橙色版 上面三个都是近期的,算是开始走简洁.扁平化路线,颜色也多用干净.

点赞设计

需求:对某一个试题 或者 某一个话题 或者 某一个新闻 点赞 ,每个人只能点赞一次,第一次点赞的时候 增加1 再一次点赞的时候 就取消点赞 设计: 1.用户点赞 必须要登陆才可以,这样就可以获取该用户的uid: 2.设计数据表 被点赞的记录表 ,以试题为例: question 表 tid  --------题目id question -----问题题目 answer -------问题答案 -------------------------------------------- zan  表 i

用了这几条单片机控制板的设计原则,老板都为你点赞!

单片机控制板在设计过程中,如果你能够遵循下面的几个原则,老板一定为你点赞! (1)在元器件的布局方面,应该把相互有关的元件尽量放得靠近一些,例如,时钟发生器.晶振.CPU的时钟输入端都易产生噪声,在放置的时候应把它们靠近些.对于那些易产生噪声的器件.小电流电路.大电流电路开关电路等,应尽量使其远离单片机的逻辑控制电路和存储电路(ROM.RAM),如果可能的话,可以将这些电路另外制成电路板,这样有利于抗干扰,提高电路工作的可靠性. (2)尽量在关键元件,如ROM.RAM等芯片旁边安装去耦电容.实际

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

来源: Android App的设计架构:MVC,MVP,MVVM与架构经验谈 和MVC框架模式一样,Model模型处理数据代码不变在Android的App开发中,很多人经常会头疼于App的架构如何设计: 我的App需要应用这些设计架构吗? MVC,MVP等架构讲的是什么?区别是什么? 本文就来带你分析一下这几个架构的特性,优缺点,以及App架构设计中应该注意的问题. 1.架构设计的目的 通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合.这样做的好处是使得程序在开发的过程中,开发人员

点餐系统---------软件工程课程设计

一.功能需求分析 1.1实现用户登陆功能 可以实现对用户进行增删改查操作,可实现用户的登陆注销功能,并且针对不同的用户有不同管理权限,当用户登陆时,根据不同的用户身份(管理员.厨房工作人员.服务员)可以进入不同的主界面. 1.2菜单管理功能 可以对餐厅里面的菜品进行添加.下线.修改.查看功能. 1.3点餐功能 可以根据餐厅的菜单下单.并显示相应的信息,包括菜单名字.图片.价格等等. 1.4公告发布 可以实时地将最新的公告及历史公告展示,还可以查询历史公告的详细信息 1.5前台 可以实现显示所有餐

SSR———团队作业:小型论坛的设计与实践

小型论坛的设计与实践 这次团队作业,我们设计的是小型论坛的设计与实现,作为团队中的一员,我主要负责对用户进行需求调研与对用户体验的过程拍摄总结,力求我们的项目在力所能及的范围内更加完美 视频:http://202.199.28.1/files/A2010000004208DC/files.cnblogs.com/files/mxxl/%E8%AE%BA%E5%9D%9B_x264.zip(因为视频一开始比较大,所以压缩之后像素有点低,见谅) 需求调研: 首先,因为在我们的校园生活中学生和老师缺少

2016知名设计素材网站—室内设计师必看

随着经济全球化的发展,物质的极大丰富带给人们琳琅满目的商品和 更多的选择,怎么样的搭配更协调,更高雅,更能彰显居者的品味,成为一门艺术,于是诞生了软装饰行业.而要成为一名优秀软装设计师并不是一蹴而就的,需要经过长时间的历练.以下五色光软装设计培训机构小编为大家整理了一些经常逛得设计网站,以便大家能够顺利找到学习资源.希望能帮助到大家,记得点赞哦. 国外 GIGA循绿 全球室内设计  美国室内设计中文网 关于布艺的Tapis chis 床上用品Yves Delorme 法国的Maisons 和Ma

产品设计中要考虑6大类优先级

设计中对优先级的把握就是要让我们能够将真正重要的功能/内容/元素放到突出的位置,以最多的界面资源去展示它们,而将次要的部分弱化,隐藏起来,在此的部分索性砍掉.这是产品在设计中最容易忽略的地方,也是初级产品在优化和设计用户界面时,容易犯的错误.至于和怎么排放按钮,整理功能的方法.我之前有篇文章已经写了. 删除.组织.隐藏.转移,四个方法做好产品的"简单化设计" .那我们在设计中要考虑哪些优先级呢?共分为以下6类. 1.用户优先级 我们都知道用户按照操作经验维度可以分为:主流用户群体/随意