手拉手開發nodejs電影cms系統①:內容規劃,導航分類,視頻數據,用戶,留言

有作過站長,或者玩過視頻cms的朋友應該瞭解過市場上有種類繁多的php視頻cms,作完一個作過站長的垃圾前端工程師,想了半天,作點貢獻(其實就是本身想寫),寫一套nodejs+mongodb的cms怎麼樣呢(實際上是由於失業,心情不大好,轉移情緒)。php

第一章手拉手開發nodejs電影cms系統①:內容規劃,導航分類,視頻數據,用戶,留言
第二章手拉手開發nodejs電影cms系統②:定時任務,視頻源數據,初始化數據
第三章手拉手開發nodejs電影cms系統③:寶塔面板懶人部署前端

第一章,內容規劃

後臺部分

按功能來劃分,視頻數據,留言模塊,用戶模塊,配置模塊,其餘模塊(導航,分類),模板模塊,定時認爲模塊,腳本管理模塊。node

前臺部分

按頁面來分,主頁面(展現各種信息),詳情頁(展現單條數據的信息),播放頁(展現單條數據的信息+播放),我的中心(修改密碼,修改暱稱),分類頁(所有分類,年代,地區),搜索頁(搜索數據),導航頁(某個導航下的全部分類數據)mongodb

導航分類(後臺)

先要肯定分類字段,在電影網站的分類頁面,都會有分類的單獨描述,關鍵字(這裏簡稱seo信息)。導航下也許存在二級分類(可能須要聯表查詢子分類),導航能夠設置顯示隱藏。導航萬一要調整輸出順序呢?(因此index位置少不了)
name(用於導航名稱),display(顯示隱藏),parent_id(存在父級導航,那麼存父級的_id,不存在則存false,用於判斷真假,是不是一級導航或者二級分類),seo信息用於存儲image.pngsegmentfault

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

視頻數據(後臺)

先要肯定數據字段,有哪些字段??字段設置成什麼類型合適??
這裏我參照資源網的來思考作數組

標題,導演,主演,更新時間,描述,更新狀態,封面,語言,地區,發佈時間。這幾個字段是必需要有的,
這裏須要注意的是,若是搜索中藥作演員表索引搜索的話,最好吧演員表這裏設置成數組.例: ["靳東","蔣欣"];
這樣在mongodb中使用$in操做符方便查找演員,我這裏由於不作演員索引,索引就直接字符串來存。
若是不是存的數組,存字符串來查找演員,那麼免費版芒果,只能用正則,很浪費時間前端工程師

image.png
其餘功能好比: 顯示隱藏display,容許留言replay,置頂popular,能夠設置布爾值分佈式

{
    "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" : "國語",
    "sub_region" : "大陸",
    "rel_time" : "2020",
    "introduce" : "同一個城市中,三個彼此陌生的家庭都出事了,三個婚姻失敗的家庭孤獨無助難以自拔,不約而同想換 個活法,逃避現實生活的殘酷。一個有着一段風雨過去的女人介入了他們的顛覆,等待他們的是無盡的未知,瘋狂玩樂代孕豔遇快意恩仇。有人選擇順從宿命,有人選擇逆天而愛,歷經了萬水千山,是從新回頭仍是拒絕,他們該如何面對?",
    "remind_tip" : "更新至14集",
    "popular" : true,
    "allow_reply" : false,
    "display" : true,
    "scource_sort" : false
}

分類怎麼辦?

一個電影在展現的時候是須要找對應的分類,若是字段寫死了,那麼後期想修改分類的名稱,就要找到全部的視頻數據,批量替換舊的分類名稱,這就很差了。最好的辦法就是《聯表查詢》,mongo提供了聯表查詢的操做,使用管道aggregate操做符來聯表查詢ide

{
    $lookup: {
        from: "other",                   // 關聯的表 名稱
        localField: "video_type",        // 當前表的字段 須要關聯到目標表
        foreignField: "_id",             // 目標表和當前表字段對應的字段
        as: "type"                       // 輸出的字段
    }
},
{
    $unwind: "$type"
}

那麼索引到的數據大概就是這樣↓
image.pngpost

用戶模塊

用戶信息最少也須要有三個字段,username(用戶名), password(密碼),nickname(暱稱)
其餘的好比,顯示隱藏display, 權限位置高低grade_id,是否默認default,能夠作,這裏以最簡單的爲例子
密碼能夠md5或者md5+hash,或者加點鹽??
_id 是mongodb插入時自帶的惟一索引的字段,對於分佈式來講解決了id重複的問題,咱們能夠直接用。省去了本身生成id的麻煩事了,自帶惟一索引,血賺

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

留言模塊

可能新同窗(這裏指的是cxk打籃球的那種前端去搞留言)作留言的時候麻煩過,怎麼規劃?有啥字段。
這裏以樓中樓形式留言爲模型。
image.png

數據字段以下:

  • _id系統自帶,用於表示本條數據的惟一id,
  • vid用於關聯視頻表中對應視頻的惟一_id,
  • uid用於關聯用戶表中對應的用戶的惟一_id,
  • pid用於查找本條留言的父一級(這裏指蓋樓那個小崽子那條留言的_id)
  • wid樓裏面的留言確定是對某某人進行的,你回覆了哪一個鱉孫??就是那個鱉孫的惟一_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" : "達大廈"
}

和視頻數據關聯分類數據同樣,咱們不能每條留言吧用戶名和對誰回覆寫死,萬一對方更名了呢??你全表在找到舊的數據瘋狂替換嗎?因此這裏還得用聯表查詢。

查找留言的時候,規則以下:
先找到一級評價,也就是蓋樓那個鱉孫
image.png

image.png

而後循環這兩條數據,用這兩條數據_id,去找蓋樓的下面的二級回覆的數據,找到吧他們加到本條數據(蓋樓的那條數據)的children字段裏面
image.png

至此留言和用戶部分結束。

相關文章
相關標籤/搜索