数据库 - 图1

数据库字段

数据库 - 图2

更新时间:2023-04-04 11:20:04

添加字段
开始使用数据库的第一步是设置数据库的列的结构,也就是我们说的“字段”。
添加一个数据库组件后,我们可以通过右上角的按钮来添加一个列(或段):
数据库 - 图3
点击按钮后,会出现一个字段设置弹窗:
数据库 - 图4
如上图,我们需要至少选择字段的类型,以及填写字段名称。另外,还有一个区域可以设置该字段的索引与搜索条件。我们来大致介绍一下每个区域的意义:
1、字段类型
字段类型就是字段的格式,每一字段中的值,只能有一种类型。每一种类型都有其适用的场景
  • 文本:存储字符串类型的数据,比如姓名,标题,描述等等,注意,有些看起来是数字的信息,比如身份证号码,手机号,其实也建议存储为文本类型,因为他们本质上是一个字符串,并不需要数值的那些操作函数,另外数值类型有数值大小限制,比如18为的身份证号就超过了最大数值限制。文本字段,存储的最大字符数量是65535(英文字符)
  • 数值:存储数值类型的数据(可以有小数),针对数值类型的字段,在查询输出的时候,可以用大于,小于这样的操作判断,更新字段的时候,也可以用“+”和“×”这两个操作,而普通的文本字段,只能用“赋值”这个操作。在iVX中,数值字段对应于MySQL中的double类型的字段,默认最大的整数位数是15位,最大的小数位数是5位
  • 图片:图片字段本质上就是一个文本字段,其存储的数据是图片的资源URL。在后台mysql数据表中,也是一个字符类型的字段,但在iVX中,图片字段提供了显示图片以及上传图片的功能,方便我们查看与上传图片。比如,同一个图片URL数据,在图片字段和文本字段中的显示如下:

数据库 - 图5
图片字段存储的最大url字符数为255
  • 时间:时间字段对应于MySQL中的datetime类型的字段,用来存储一个特定的时间点,比如:数据库 - 图6,可精确到毫秒。时间字段的意义在于其提供时间的比较,可以在输出时,查询某个时间字段的时间大于或小于另一个时间的记录。
  • JSON:JSON类型的字段,用于存储结构化的数据,比如,我们可以将某个数组或者通用变量的值,直接存储至JSON字段。

2、字段名称
字段名称为这个列的名称,我们可以根据这个字段需要存储的信息来命名,比如“姓名”,“分数”。每一个表的字段名称不可冲突,且不可为纯数字。
3、索引与搜索条件
索引与搜索条件,是为了让数据库在查询的过程中更加优化,iVX中,目前可以设置这些条件:
  • 不可插入重复数据:即MySQL中的Unique索引。勾选这个选项后,这个字段就不能插入重复的数据,比如,我们添加一个“手机号码”字段,让用户填写自己的手机,当勾选这个不可插入重复数据之后,如果之前已经有用户提交了相同的手机,那后面的用户就无法提交这个手机了;除了不可插入重复数据,这个选项也会自动为当前字段添加索引,提高查询速度,隐藏,勾选“不可插入重复数据”后,系统会自动勾选“索引”选项;
  • 索引:添加普通的索引。添加索引后,会提高数据库的查询速度,如果您需要经常按某个字段的条件查询,则建议勾选这个选项。但索引也有成本,会造成同步数据以及插入数据相对一些。详见索引详细说明;
  • 搜索区分大小写:默认情况下,对于英文的搜索,系统不会区分大小写,比如,我们要搜索字段姓名为 “abc”的记录,那默认情况下“ABC”也会符合条件,如果要严格区分大小写,则勾选这个选项;
  • 启用全文搜索:全文搜索,会自动根据用户搜索内容进行分词和匹配,任何勾选了全文搜索的字段,就会进入全文搜索库。之后,可以通过数据库的“全文搜索”动作来进行查询。注意,全文搜索消耗的后台服务资源较多,建议确认需求后再添加。

系统默认字段
1、普通数据库的默认字段
当我们添加了一个字段之后,我们会发现系统默认帮我添加了一些字段。比如,我们在一个新建的数据库里添加了一个“姓名”字段后,我们的数据库面板会变成这样子:
数据库 - 图7
这些灰色的字段是系统默认添加的只读字段,即我们无法去修改这里面字段值:
  • 数据ID:这一行数据的唯一ID,默认是一个从1开始的自增长序列,注意,如果我们中途删除了一些数据,那后面添加的数据不会“填补”之前的数据ID,还是会在原来的基础上增长。比如,我们删除了数据ID为5、6、7的行,继续添加数据的时候,数据ID还是会从8开始,那我们的数据库中的行的ID就会变成 1、2、3、4、8、9.. ;
  • 提交用户:这条记录是由谁提交的。如果是在编辑器中手动导入或创建,则提交用户为空。如果是在应用运行时由用户提交,则会显示用户的ID。根据不同的环境,这个用户ID也有不同的类型,比如匿名用户ID,手机号,微信openid等等;
  • 创建时间:这条记录的提交时间,如果是我们手动导入或添加的数据,则是我们添加数据的时间。一条记录一旦被创建之后,创建时间不会改。在MySQL中,创建时间存储为timestamp类型;
  • 更新时间:这条记录的修改时间,即最后一次更新的时间。如果创建创建时间等于更新时间,则说明这条记录在创建之后没有被更新过;

这些默认只读字段,都是自动记录的信息,因此在数据库的更新以及提交动作里,无法选择这些字段进行写入,但是这些字段可以读取。
2、功能型数据库的默认字段
除了普通数据,iVX还提供功能型的数据库组件,比如电商,投票,用户,路由表等,这些功能型数据库,也自带以上普通数据库的4个默认只读字段,但可能根据功能的不同,还有一些额为的默认字段。
以电商组件的购物车表为例,当我们添加电商组件时,下面自动会创建三个表,其中购物车表的结构如下:
数据库 - 图8
我们会发现,在购物车表中,有一个“数量”字段,即这个购物车项目的数量,这个字段是可以在运行时操作的,因为我们需要执行添加/删除购物车项目的功能给到用户。但这个字段是不能被删除的,如果删除了购物车表就无法记录购物车项目数量了。
字段的修改
当我们设置完字段之后,可以随时对字段进行修改,只要右键字段名称,就可以调出字段设置面板了:
数据库 - 图9
除了设置字段,右键字段名称出现的菜单中,还可以删除当前列,修改字段列的位置,以及在当前位置前或后添加列:
数据库 - 图10
注意:一旦应用一经发布并运行,我们修改字段,特别是删除字段,一定要谨慎。数据库的结构是整个应用的骨架,牵一发而动全身,不小心删除了字段,可能会导致前端应用不正常,修改字段名称,可能会导致前端对象数组中的引用失效,而修改字段的顺序,可能导致前端二维数组的引用失效,因此,应用一定发布并运行,建议不要修改已有的字段。 ## 数据的预制与导入 数据库 - 图11 更新时间:2023-04-04 15:35:28

数据库数据添加
数据库中的大多数数据,都是应用运行时(即预览或发布后)由用户提交的,但我们也可以在编辑器中预制一些测试数据,或者导入一些固定的数据,比如,导入抽奖的中奖号码或者商品列表。
在iVX中,有两种向数据库添加预制数据的方法,包括手动录入与excel导入。
手动录入
添加完字段之后,我们可以点击数据库表格左下角的“+”号,来手动录入数据,如下图:
数据库 - 图12
注意,录入完成之后,需要点击“保存修改”按钮,将录入的数据保存至数据库。
双击格子,也可以手动修改现有的数据。
excel表格导入
当要预制的数据量很大的时候,我们可以选择从excel导入。
数据库 - 图13
对于导入的excel数据,系统会自动将excel的第一行识别为字段名称。此时分两种情况:
  • 当excel第一行中的某个字段在数据库中已存在时,系统将把该字段对应的列中的数据添加至对应字段下;
  • 当excel第一行中的某个字段在数据库中不存在 时,系统将自动创建一个新的文本类型的字段;

导入的excel数据,默认将“添加”至现有的数据之后,而不会覆盖数据。如果您希望导入的excel覆盖当前的数据,则可以添加一个“数据ID”列,此时,系统将把现有数据库中数据ID和excel中数据ID相同的记录替换为excel中的数据。
我们接下来举个例子,假设现在我们的数据库结构如下:
数据库 - 图14
我们准备导入的excel如下:
数据库 - 图15
导入以上excel后,数据库会自动创建“性别”和“年级”两个字段,并将数据保存到已有数据的下方:
数据库 - 图16

数据库管理

数据库 - 图17

更新时间:2023-04-04 17:52:03

功能概述
默认情况下,数据库的数据都可以通过服务随意地进行“增删改查”,但有的时候我们希望数据库内的数据有更高的安全性,希望对数据库的修改甚至删除添加一定的限制。我们并不希望自己上传的数据信息可以被别的人轻松修改,这样会导致数据库信息变得不准确,而且这也不利于数据库的安全。
我们当然可以在写服务时,多加一层验证来增强安全性,但服务数量过多就会导致工作量变大且后续维护成本也会跟随上升。iVX内的数据库预设了一些权限管理 来限制用户对数据库的提交、更新和删除操作,我们只需要在数据库面板上设置好这些权限,每次通过服务操作数据库,后台都会自动进行权限验证以确保操作的有效性 和数据的安全性,只有满足权限设置条件的操作才会被数据库所接受。
安全保护
点击开关打开“安全保护”的设置,我们可以限制用户对数据库的修改和删除权限来确保数据的安全性:
数据库 - 图18
其中用户更新权限可以设置为:
仅可更新自己提交的记录,允许用户更新自己提交的记录(权限管理里通过数据库内自动添加的只读字段—“提交用户”来验证身份),但是不能更新别人提交的数据;
所有记录均不可更新,当前数据不允许任何通过服务的更新动作;
可任意更新记录,所有的记录可以被任何人调用服务进行修改;
相较于更新权限,iVX对删除操作的限制更为严格,一般来说我们都不希望用户能通过服务任意删除数据,因此可选择的权限只包含:
所有记录均不可删除,通过服务进行数据库数据的删除都会被拦截并取消
仅可删除自己提交的记录,调用服务的人为原始提交者时才可执行删除操作。
限制提交记录
点击开关打开“限制提交记录”的设置,该部分的权限管理用于限制用户向数据库提交新的记录,通过时间或次数的设置来限制数据库新增记录的条数。 开始和结束时间可以限制提交服务生效的时间段,其他的设定则会分别依据提交用户已提交的记录数 和数据库总共已接收的提交记录数量 来判断后续的提交服务是否有效。
限制提交记录在投票的案例中非常实用,我们往往会搭建一个记录投票流水的数据库用来统计投票者每日已用的票数并确定他们是否还有继续投票的权限, 假设我们希望每位用户每天只有5票可用,那么设置“每人每日提交次数”为5次即可,用户在今日内提交5次数据记录后、就不能提交新的记录了。数据库管理

数据库 - 图19

更新时间:2023-04-04 17:52:03

功能概述
默认情况下,数据库的数据都可以通过服务随意地进行“增删改查”,但有的时候我们希望数据库内的数据有更高的安全性,希望对数据库的修改甚至删除添加一定的限制。我们并不希望自己上传的数据信息可以被别的人轻松修改,这样会导致数据库信息变得不准确,而且这也不利于数据库的安全。
我们当然可以在写服务时多加一层验证来增强安全性,但服务数量过多就会导致工作量变大且后续维护成本也会跟随上升。iVX内的数据库预设了一些权限管理来限制用户对数据库的提交、更新和删除操作,我们只需要在数据库面板上设置好这些权限,每次通过服务操作数据库,后台都会自动进行权限验证以确保操作的有效性和数据的安全性,只有满足权限设置条件的操作才会被数据库所接受。
安全保护
点击开关打开“安全保护”的设置,我们可以限制用户对数据库的修改和删除权限来确保数据的安全性:
数据库 - 图20
其中用户更新权限可以设置为:
仅可更新自己提交的记录,允许用户更新自己提交的记录(权限管理里通过数据库内自动添加的只读字段—“提交用户”来验证身份),但是不能更新别人提交的数据;
所有记录均不可更新,当前数据不允许任何通过服务的更新动作;
可任意更新记录,所有的记录可以被任何人调用服务进行修改;
相较于更新权限,iVX对删除操作的限制更为严格,一般来说我们都不希望用户能通过服务任意删除数据,因此可选择的权限只包含:
所有记录均不可删除,通过服务进行数据库数据的删除都会被拦截并取消;
仅可删除自己提交的记录,调用服务的人为原始提交者时才可执行删除操作。
限制提交记录
点击开关打开“限制提交记录”的设置,该部分的权限管理用于限制用户向数据库提交新的记录,通过时间或次数的设置来限制数据库新增记录的条数。开始和结束时间可以限制提交服务生效的时间段,其他的设定则会分别依据提交用户已提交的记录数和数据库总共已接收的提交记录数量来判断后续的提交服务是否有效。
限制提交记录在投票的案例中非常实用,我们往往会搭建一个记录投票流水的数据库用来统计投票者每日已用的票数并确定他们是否还有继续投票的权限,假设我们希望每位用户每天只有5票可用,那么设置“每人每日提交次数”为5次即可,用户在今日内提交5次数据记录后就不能提交新的记录了。