开发nodejs电影cms系统①:内容规划,导航分类,视频数据,用户,留言

第一章,内容规划

后台部分

按功能来划分,视频数据,留言模块,用户模块,配置模块,其他模块(导航,分类),模板模块,定时认为模块,脚本管理模块。

前台部分

按页面来分,主页面(展示各类信息),详情页(展示单条数据的信息),播放页(展示单条数据的信息+播放),个人中心(修改密码,修改昵称),分类页(全部分类,年代,地区),搜索页(搜索数据),导航页(某个导航下的所有分类数据)

导航分类(后台)

先要确定分类字段,在电影网站的分类页面,都会有分类的单独描述,关键字(这里简称seo信息)。导航下也许存在二级分类(可能需要联表查询子分类),导航可以设置显示隐藏。导航万一要调整输出顺序呢?(所以index位置少不了)

name(用于导航名称),display(显示隐藏),parent_id(存在父级导航,那么存父级的_id,不存在则存false,用于判断真假,是否是一级导航或者二级分类),seo信息用于存储

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

视频数据(后台)

先要确定数据字段,有哪些字段??字段设置成什么类型合适??

这里我参照资源网的来思考做

标题,导演,主演,更新时间,描述,更新状态,封面,语言,地区,发布时间。这几个字段是必须要有的,

这里需要注意的是,如果搜索中药做演员表索引搜索的话,最好吧演员表这里设置成数组.例: ["靳东","蒋欣"];

这样在mongodb中使用$in操作符方便查找演员,我这里因为不做演员索引,索引就直接字符串来存。

如果不是存的数组,存字符串来查找演员,那么免费版芒果,只能用正则,很浪费时间

其他功能比如: 显示隐藏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操作符来联表查询

{    $lookup: {        from: "other",                  // 关联的表 名称        localField: "video_type",        // 当前表的字段 需要关联到目标表        foreignField: "_id",            // 目标表和当前表字段对应的字段        as: "type"                      // 输出的字段    }},{    $unwind: "$type"}

那么索引到的数据大概就是这样↓

用户模块

用户信息最少也需要有三个字段,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打篮球的那种前端去搞留言)做留言的时候麻烦过,怎么规划?有啥字段。

这里以楼中楼形式留言为模型。

数据字段如下:

_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" : "达大厦"}

和视频数据关联分类数据一样,我们不能每条留言吧用户名和对谁回复写死,万一对方改名了呢??你全表在找到旧的数据疯狂替换吗?所以这里还得用联表查询。

查找留言的时候,规则如下:

先找到一级评价,也就是盖楼那个鳖孙

然后循环这两条数据,用这两条数据_id,去找盖楼的下面的二级回复的数据,找到吧他们加到本条数据(盖楼的那条数据)的children字段里面

至此留言和用户部分结束。

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • width: 65%;border: 1px solid #ddd;outline: 1300px solid #...
    邵胜奥阅读 4,917评论 0 1
  • 任何数据库中查询都是最麻烦的,在MongoDB中对于查询的支持非常到位,有关系运算,逻辑运算,数组运算等等首先对于...
    许先森的许阅读 3,075评论 0 1
  • CREATE TABLE IF NOT EXISTS ecs_order_info (order_id mediu...
    cookie口阅读 15,809评论 0 16
  • 一. Java基础部分.................................................
    wy_sure阅读 3,854评论 0 11
  • 再帅也要忍住! 不理我我绝对不理你!
    cicich阅读 151评论 0 0