【iVX】数据库发布时是否需要选择同步数据

【私有化部署时的更新】
为减少私有化部署时对后台数据同步与否的误操作, 将会对在应用导出前弹出后台数据库导出同步选择框, 如下所示, 勾选意味着导出的不仅有前端代码, 还有后台数据库里面的数据, 这些数据在自己服务器上执行 ivxbase 时会将生产环境下的数据覆盖, 因此每一个勾选都需要慎重再慎重, 如果是通过iVX的发布按钮直接发布, 数据的误删或覆盖是支持人工找回的(需付费), 如果是私有化部署以后的数据误删或覆盖, 则我们不支持找回(黑客也难做到).
【iVX】数据库发布时是否需要选择同步数据

 

【更新通知】
由于发布时同步数据的开关按钮过于危险,尽管我们在编辑器中已经弹窗提醒,并在发布界面再次提醒,依然有用户在不察觉的情况下,打开这个按钮,然后发布,然后。。。酿成悲剧。因此,为了防止各种发布时数据被清空的人间惨剧,我们将隐藏这个可怕的按钮(正式服更新将在9月18日,latest版本更新在9月10日)。如果您希望将预览的数据同步至发布数据库,可以至发布数据库手动点击这个按钮:

【iVX】数据库发布时是否需要选择同步数据


----------------------更新分割线----------------------
在ivx中,为了保证后台服务的稳定性和安全性,预览和发布版本应用的后台服务是部署在两套隔离的硬件环境中的,包括普通数据库以及特殊用途数据库(电商,用户,投票等等)。因此,我们在预览时向数据库中添加的测试数据,和正式发布时用户提交的数据,是存放在两张表里的。

预览版:
【iVX】数据库发布时是否需要选择同步数据

发布版:
【iVX】数据库发布时是否需要选择同步数据

在应用发布时,数据库的发布过程包括两个独立的部分:
1、数据库结构的同步
2、数据库数据的同步

【iVX】数据库发布时是否需要选择同步数据


如上图所示:

数据库的结构,即数据库的字段设置,包括字段名称,类型等等,在发布时,会从预览数据库完全同步至发布数据库,因为数据库的结构是应用逻辑的一部分,如果预览和发布数据库的结构不同步,会导致应用的行为在预览和发布时不一致;

数据库的数据,即表格中的内容,我们可以通过一个数据库的属性开关来设置是否同步数据:
【iVX】数据库发布时是否需要选择同步数据

默认情况为不勾选,因为在大多数情况下,我们不希望预览时的测试数据影响到发布时的数据,比如,我们做一个会议报名的应用,在预览时有许多测试报名信息,这些信息并不是用户真正提交的报名信息,我们不希望这些测试报名信息污染到用户真正提交的信息。

但在有些情况下,我们可能希望将预览数据表中的数据复制至发布数据表中。比如,电商中的商品数据库,投票中的候选人数据库,或者一些公共的静态配置数据(如某个下拉菜单的可选类型列表),这些数据库我们可能是直接在案例编辑状态下进行维护,然后在每次案例发布时更新同步至发布数据库。此时,我们就可以打开这个同步数据库的开关。
注意:当我们打开此选项时,任何在当前发布数据表中收集的数据,都会被覆盖成为预览表中的数据。因此打开这个开关要额外小心,一旦数据被覆盖后,就无法再恢复了。

在发布界面中,我们还有最后一次机会确认一下本次发布即将同步数据的数据库列表:
【iVX】数据库发布时是否需要选择同步数据

最后,发布时是否同步数据,是可以在每次发布时修改的,因此,针对某些数据库,我们可以在第一次发布时打开同步开关,为发布数据表添加一些初始化数据,然后第二次发布时关闭同步开关,以保持用户后期提交的数据内容。