有些数据需要在后台配置,比如视频、文章、图片等,所以也就有 video、article、picture 这些表,现在要搞一个预览功能,也就是数据配置完成后,先是配置人员预览确认没问题后,再点一下“发布”按钮,这样才会让用户看到新配置的数据。
现在我想到 2 个方法:
我觉得上面 2 种方法都不大行啊,点击一下“发布”按钮,要做好多操作,感觉容易出幺蛾子啊。
求各位大佬指点下我这个赶鸭子上架的菜鸡,另外就是大佬们有没有常用的表设计范式的书,推荐一些,不胜感激🙏
1
lhx2008 2019-12-30 22:35:41 +08:00 via Android 1
第一种吧
|
2
wangyzj 2019-12-30 22:41:47 +08:00 1
第一种适合小场景
第二种适合大规模 cdn 场景 |
3
iamwho 2019-12-30 22:43:09 +08:00 1
各个表加 draft 字段,需要权限才能看到,或为 0 显示。
|
4
zhuzhibin 2019-12-30 22:58:40 +08:00 via iPhone 1
听不太明白 如果仅仅是 release 版本 用户才可以浏览得到 那么就统一 state 去管理即可 类似你说的 A 方案 整个页面发布的流程就是
预览->发布 管理 state 就好 后续复杂也可以补充回滚啥的 |
5
xiaofan2 2019-12-30 23:04:16 +08:00 1
第二种没必要,你相当于插了两次相同数据
|
6
avenger 2019-12-30 23:10:17 +08:00 via iPhone 1
加个 flag 就好,参考 wordpress
|
7
noobma OP 谢谢各位大佬🙏,看来第 1 种方案结合上 #3 大佬说的限制权限比较合适
|
8
Sunyanzi 2019-12-30 23:11:59 +08:00 1
为什么我做的预览从来都没有涉及数据库的 ... 都只是用既定的模版渲染一遍用户输入的数据而已 ...
换言之就是假装页面上展示的这些数据是从库里读出来的 ... 实际上都是前一页输入的还没入库 ... 顶楼这个需求 ... 在我看来更像一个「待审核」的状态 ... 默认发布只有特定权限组可见 ... 后续才扩展可见性 ... 那么这样毫无疑问是第一种解决方案 ... 也就是一个 status 字段的事情 ... 何必冗余表呢 ... |
9
noobma OP @Sunyanzi 主要是有些视频和图片需要传到 OSS 上面,如果不在服务器上存住状态的话,一刷新或者换个浏览器,我那个 OSS 上面的空间就被浪费了😅 已经打算采取第 1 种方式了
|
10
jackrebel 2019-12-30 23:21:37 +08:00
第一种就好, 第二种你一旦改了主要表的结构, 你这临时表也要跟着改。 要改的地方好多。
|
11
yb3712590 2019-12-31 00:01:25 +08:00
之前看 informatica 元数据的版本控制设计思路,供参考。
对象表和模块表存在 visible、validated、version 和 last_save_timestamp 等字段。 更新某个对象产生了新的版本,会在一张额外的验证表中留下对象 ID 和新的时间戳,对模块查看时,比对模块包含的每个对象的验证记录,时间戳落后则标记为失效模块,进而要求人工验证并刷新整个模块的版本,记录新的时间戳,此时版本最新且模块可用,但只对操作人可见,对应 preview。 最后对有效模块版本的签入,标记 visible,对所有人可见,对应发布操作。 |
12
mcfog 2019-12-31 00:07:53 +08:00 via Android
几乎任何情况下我都选第二种
我就不信发布以后就没有修改的需求,有一个人预览就没有第二个人审核的需求 编辑的时候可能是一个后台表对应一个编辑界面,复杂字段 json 揉一坨完事儿,发布到前台主站可能是三个表外加 es 上报 |