页面内数据 | 远程数据
阅读本篇前,建议先熟悉【数据的读取与显示】
数据定义
远程数据: 存储在数据库中的数据,这个数据库可以是 Zion 自带的数据库,也可以是第三方的数据库,第三方数据库需要通过API来进行连接
远程数据的作用
将保存在数据库中的数据读取出来使用或者显示在页面上
配置指南
在页面里配置远程数据
选中某个页面之后,可在其「内容」中添加远程数据
在组件里配置远程数据
选中某个列表类组件,可在其「内容」中添加远程数据
远程数据的配置项定义
名称
默认为 remote_data ,表示这条远程数据的命名。你可以点击该名称进行修改, 决定了在进行数据绑定时,以什么名称调用本条数据。
数据表
指定要请求哪一张数据表的数据
请求类型
「查询」意味着每当页面加载/刷新时,向服务器执行查询请求; 「订阅」意味着当数据模型中数据变化后,会实时返回最新值,但订阅对媒体和文件等类型的数据不可用
数据限额
限制发起请求时向这张数据表请求单条还是多条数据,消勾选限额意味着全选所有过滤后的数据
读取单条时
当限额=1时,说明要向数据库请求具体的某张表中的一条数据,在调用远程数据进行数据绑定时,就可以直接选到这条数据的某个字段进行绑定
img | img |
---|---|
读取多条数据时
当限额大于1时,一般想要获取的是数据库的某张表中符合条件的数据有几条,即 count ,而后拿来做显示或者条件判断
img | img |
---|---|
- 进行数据库中某张表整数字段数据的计算
- sum:某数字类型字段的总和;
- avg:某数字类型字段的平均值;
- max:某数字类型字段的最大值;
- min:某数字类型字段的最小值
例如:数据库中有一张收益表,收益表中有一个名为「今日收益」类型为「无限精度小数」类型的字段,想要在页面上显示某个人的总收益、每日平均收益、当日最高收益等数据时,可在页面上配置远程数据,取消限额,读取这个用户的所有收益数据,然后就可以在页面上通过绑定远程数据的 sum、avg、max来计算并显示总收益、每日平均收益、当日最高收益
数据筛选
💡Tips:数据筛选对于小程序来说,只能在预发布后扫码在手机上体验才生效!
根据不同的条件来配置不同的数据筛选规则,如下图所示,对于同一个远程数据,你可以配置当满足某种条件时,配置特定的过滤、排序以及去重规则
过滤
通过设置过滤条件筛选出符合条件的数据,类似于在一张 Excel 表中根据某一列的内容来进行筛选,一般请求数据时都会配置过滤条件,但如果确认不需要配置,那么可以点击放弃过滤,否则会报错
例如:过滤出学生表中性别为男的学生,过滤条件为:性别 = '男',则远程数据就会请求所有性别为男的学生数据。
💡 重要Tips:
- 当条件等于的值不存在时(即没有数据),则会返回任意数据。 例如:设置过滤条件为 id = "链接数据",但此时“链接数据”没有被赋值,那么此时相当于没有设置条件,就会返回任意数据。如果此时【单次请求条数】设置了 1,那对应的就是返回任意一条数据。
- 当期待远程数据在特定条件下不请求任何一条数据时,可以设置其过滤条件为 ID = -1 。例如:发布活动页面与更新活动页面在大多数情况下布局跟使用的组件都是一样的,只是最后的按钮一个是发布、一个是更新,那么是没有必要制作两个页面的,我们只需要在页面上配置条件式容器,来判断用户现在的操作是更新还是发布,那么条件式子容器呈现对应的按钮即可。
一般我们会在发布/更新活动页上添加一个整数类型的链接数据,对于发布页面来说,当用户在其它页面点击发布按钮,那么就通过跳转行为传递 -1 给到发布页面,在发布页面,远程数据通过过滤条件 id = -1 是拿不到任何一条数据的,那么页面上的组件虽然绑定了远程数据,但没有值,而条件式容器也可以通过判断链接数据等于-1来决定要显示发布按钮,点击按钮执行的就是发布操作。 对于更新页面来说,链接数据接收的是这个要更新的活动数据的id,这个id就可以给到远程数据来过滤读取特定的活动数据,从而将这些数据绑定到页面的组件上显示出来,同时条件式容器判断链接数据不等于-1时,显示的就是更新按钮,点击按钮执行的就是更新操作
排序
在确定了排序字段后,可以进一步决定是以升序还是降序进行排序。
去重
将请求过来的数据,根据某个字段将重复的数据去除,只保留重复数据中的一条数据,去重的字段要跟排序字段一致!
请求状态变化时
在请求状态发生变化时候触发的行为。
共有5种状态:正常、载入、错误、成功、信息错误、业务错误。
一般不常用,如果需要在请求状态变化时给予用户提示时会进行使用。计算这个请求什么时候成功,需要花多久这个请求会成功。
成功时
在远程数据数据读取成功后会触发添加在这里的行为。
- 这里容易被理解成,是一定读取到数据才算成功。实际是不管有没有读取到数据,只要读取的动作是正常的,即便没有读取到任何数据,也是成功时。
- 例如:远程数据为学生表,设置条件为姓名 = '章三',结果数据表中没有姓名为章三的学生,这时就会返回空,这也是成功。
💡 Tips: 成功时非常重要,经常会需要在这个位置添加行为,因为需要确定这个步骤已经拿到数据或者已经进行完了。比如利用过滤判断用户的账号是否存在,如果成功时发现结果数据为空,证明没有账号就可以触发自己设定的其他行为。