開發(fā)nodejs電影cms系統(tǒng)①:內(nèi)容規(guī)劃,導(dǎo)航分類,視頻數(shù)據(jù),用戶,留言

第一章,內(nèi)容規(guī)劃

后臺(tái)部分

按功能來劃分,視頻數(shù)據(jù),留言模塊,用戶模塊,配置模塊,其他模塊(導(dǎo)航,分類),模板模塊,定時(shí)認(rèn)為模塊,腳本管理模塊。

前臺(tái)部分

按頁面來分,主頁面(展示各類信息),詳情頁(展示單條數(shù)據(jù)的信息),播放頁(展示單條數(shù)據(jù)的信息+播放),個(gè)人中心(修改密碼,修改昵稱),分類頁(全部分類,年代,地區(qū)),搜索頁(搜索數(shù)據(jù)),導(dǎo)航頁(某個(gè)導(dǎo)航下的所有分類數(shù)據(jù))

導(dǎo)航分類(后臺(tái))

先要確定分類字段,在電影網(wǎng)站的分類頁面,都會(huì)有分類的單獨(dú)描述,關(guān)鍵字(這里簡(jiǎn)稱seo信息)。導(dǎo)航下也許存在二級(jí)分類(可能需要聯(lián)表查詢子分類),導(dǎo)航可以設(shè)置顯示隱藏。導(dǎo)航萬一要調(diào)整輸出順序呢?(所以index位置少不了)

name(用于導(dǎo)航名稱),display(顯示隱藏),parent_id(存在父級(jí)導(dǎo)航,那么存父級(jí)的_id,不存在則存false,用于判斷真假,是否是一級(jí)導(dǎo)航或者二級(jí)分類),seo信息用于存儲(chǔ)

{? ? "name" : "動(dòng)作片",? ? "parent_id" : ObjectId("5e819a8619f4d790bc5d0c76"),? ? "display" : true,? ? "seo" : {? ? ? ? "title" : "動(dòng)作片",? ? ? ? "keywords" : "動(dòng)作片",? ? ? ? "description" : "動(dòng)作片"? ? },? ? "type" : "nav_type",? ? "index" : 0? }

視頻數(shù)據(jù)(后臺(tái))

先要確定數(shù)據(jù)字段,有哪些字段??字段設(shè)置成什么類型合適??

這里我參照資源網(wǎng)的來思考做

標(biāo)題,導(dǎo)演,主演,更新時(shí)間,描述,更新狀態(tài),封面,語言,地區(qū),發(fā)布時(shí)間。這幾個(gè)字段是必須要有的,

這里需要注意的是,如果搜索中藥做演員表索引搜索的話,最好吧演員表這里設(shè)置成數(shù)組.例: ["靳東","蔣欣"];

這樣在mongodb中使用$in操作符方便查找演員,我這里因?yàn)椴蛔鲅輪T索引,索引就直接字符串來存。

如果不是存的數(shù)組,存字符串來查找演員,那么免費(fèi)版芒果,只能用正則,很浪費(fèi)時(shí)間

其他功能比如: 顯示隱藏display,允許留言replay,置頂popular,可以設(shè)置布爾值

{? ? "videoTitle" : "如果歲月可回頭",? ? "director" : "張建棟",? ? "videoImage" : "https://img.sokoyo-rj.com/tuku/upload/vod/2020-03-20/202003201584709196.jpg",? ? "poster" : "/upload/poster/2c726d3d-4afb-46d9-b86f-32718ad6fc08.jpg",? ? "video_tags" : [],? ? "performer" : "靳東,蔣欣,李宗翰,李乃文,左小青,趙子琪,傅晶,陳冰",? ? "video_type" : ObjectId("5e7e0c2747c77574c0c55429"),? ? "video_rate" : 0,? ? "update_time" : "2020-03-27 22:16:02",? ? "language" : "國(guó)語",? ? "sub_region" : "大陸",? ? "rel_time" : "2020",? ? "introduce" : "同一個(gè)城市中,三個(gè)彼此陌生的家庭都出事了,三個(gè)婚姻失敗的家庭孤獨(dú)無助難以自拔,不約而同想換 個(gè)活法,逃避現(xiàn)實(shí)生活的殘酷。一個(gè)有著一段風(fēng)雨過去的女人介入了他們的顛覆,等待他們的是無盡的未知,瘋狂玩樂代孕艷遇快意恩仇。有人選擇順從宿命,有人選擇逆天而愛,歷經(jīng)了萬水千山,是重新回頭還是拒絕,他們?cè)撊绾蚊鎸?duì)?",? ? "remind_tip" : "更新至14集",? ? "popular" : true,? ? "allow_reply" : false,? ? "display" : true,? ? "scource_sort" : false}

分類怎么辦?

一個(gè)電影在展示的時(shí)候是需要找對(duì)應(yīng)的分類,如果字段寫死了,那么后期想修改分類的名稱,就要找到所有的視頻數(shù)據(jù),批量替換舊的分類名稱,這就不好了。最好的辦法就是《聯(lián)表查詢》,mongo提供了聯(lián)表查詢的操作,使用管道aggregate操作符來聯(lián)表查詢

{? ? $lookup: {? ? ? ? from: "other",? ? ? ? ? ? ? ? ? // 關(guān)聯(lián)的表 名稱? ? ? ? localField: "video_type",? ? ? ? // 當(dāng)前表的字段 需要關(guān)聯(lián)到目標(biāo)表? ? ? ? foreignField: "_id",? ? ? ? ? ? // 目標(biāo)表和當(dāng)前表字段對(duì)應(yīng)的字段? ? ? ? as: "type"? ? ? ? ? ? ? ? ? ? ? // 輸出的字段? ? }},{? ? $unwind: "$type"}

那么索引到的數(shù)據(jù)大概就是這樣↓

用戶模塊

用戶信息最少也需要有三個(gè)字段,username(用戶名), password(密碼),nickname(昵稱)

其他的比如,顯示隱藏display, 權(quán)限位置高低grade_id,是否默認(rèn)default,可以做,這里以最簡(jiǎn)單的為例子

密碼可以md5或者md5+hash,或者加點(diǎn)鹽??

_id 是mongodb插入時(shí)自帶的唯一索引的字段,對(duì)于分布式來說解決了id重復(fù)的問題,我們可以直接用。省去了自己生成id的麻煩事了,自帶唯一索引,血賺

{? ? "_id" : ObjectId("5e7e35cf4345c47a1c8c15f6"),? ? "userName" : "abcdxxxx",? ? "passWord" : "ba0a086c8a7b0ca4232406b5efff3a95",? ? "nickName" : "阿打算",? ? "admin" : false,? ? "display" : true,? ? "default" : false,? ? "grade_id" : 0}

留言模塊

可能新同學(xué)(這里指的是cxk打籃球的那種前端去搞留言)做留言的時(shí)候麻煩過,怎么規(guī)劃?有啥字段。

這里以樓中樓形式留言為模型。

數(shù)據(jù)字段如下:

_id系統(tǒng)自帶,用于表示本條數(shù)據(jù)的唯一id,

vid用于關(guān)聯(lián)視頻表中對(duì)應(yīng)視頻的唯一_id,

uid用于關(guān)聯(lián)用戶表中對(duì)應(yīng)的用戶的唯一_id,

pid用于查找本條留言的父一級(jí)(這里指蓋樓那個(gè)小崽子那條留言的_id)

wid樓里面的留言肯定是對(duì)某某人進(jìn)行的,你回復(fù)了哪個(gè)鱉孫??就是那個(gè)鱉孫的唯一_id

{? ? "_id" : ObjectId("5e7f93a60eefb36e54fe8f72"),? ? "vid" : ObjectId("5e7e15b04a285358100e3d6f"),? ? "uid" : ObjectId("5e7e35cf4345c47a1c8c15f6"),? ? "pid" : false,? ? "wid" : false,? ? "agree" : true,? ? "display" : true,? ? "date" : 1585419174015.0,? ? "sub_date" : 1585419174014.0,? ? "text" : "達(dá)大廈"}

和視頻數(shù)據(jù)關(guān)聯(lián)分類數(shù)據(jù)一樣,我們不能每條留言吧用戶名和對(duì)誰回復(fù)寫死,萬一對(duì)方改名了呢??你全表在找到舊的數(shù)據(jù)瘋狂替換嗎?所以這里還得用聯(lián)表查詢。

查找留言的時(shí)候,規(guī)則如下:

先找到一級(jí)評(píng)價(jià),也就是蓋樓那個(gè)鱉孫

然后循環(huán)這兩條數(shù)據(jù),用這兩條數(shù)據(jù)_id,去找蓋樓的下面的二級(jí)回復(fù)的數(shù)據(jù),找到吧他們加到本條數(shù)據(jù)(蓋樓的那條數(shù)據(jù))的children字段里面

至此留言和用戶部分結(jié)束。

演示地址:https://www.youletv.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵勝奧閱讀 5,171評(píng)論 0 1
  • 任何數(shù)據(jù)庫(kù)中查詢都是最麻煩的,在MongoDB中對(duì)于查詢的支持非常到位,有關(guān)系運(yùn)算,邏輯運(yùn)算,數(shù)組運(yùn)算等等首先對(duì)于...
    許先森的許閱讀 3,091評(píng)論 0 1
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口閱讀 16,132評(píng)論 0 16
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 4,012評(píng)論 0 11
  • 再帥也要忍住! 不理我我絕對(duì)不理你!
    cicich閱讀 164評(píng)論 0 0

友情鏈接更多精彩內(nèi)容