關於點贊行為設計···


自建新聞從無到有。當然,評論、點贊也是一步步來的。

關於點贊的設計,也是會挖過坑,也把坑給填了。

需求是這樣子的:點贊有【好球,警告】兩個選項,點了可以取消,取消之后可以再點,也可以直接從好球直接切換到警告,同時好球和警告數也要跟着更新

采用數據庫: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上查詢是否有該鍵,同時返回該鍵的操作行為即可,就不用像之前的設計還要去遍歷數組,效率一下子就提升了。

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

我的理解就是這樣子啦。雖然我知道這篇文章會很少人看到,但是如果有人看到的話,可以和我分享下關於點贊更好的設計啦。 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM