3.2 KiB
10. 数据读取
数据读取是逻辑调用的一种用法:代码引用数据结构,发起读取,并按声明的字段使用取得的结果。调用方处理业务数据,不处理传输响应或缓存连接。
10.1 数据结构
代码归属:atelier:shop.data。商品结构沿用第 7 章的 Product:
class Product {
name: String
price: Number
}
结构使调用方能够共同理解商品名称和价格。它不定义数据库表、持久化实体或自动建表行为。
10.2 读取形式
语法提案:本节用
Product.get(...)表达“通过类取得数据”。get 的存在与声明方式尚未定义,该写法不是所有 class 自动拥有的成员。
代码归属:market:shop.checkout。读取函数示例,采用 Product 与读取成员均可访问的条件;成功路径中,读取成员接收一个 String 标识并返回 Product,其正式声明语法仍未定义:
use atelier:shop.data
function productPrice(id: String): Number {
let product = Product.get(id)
return product.price
}
调用参数 id 表达所需数据的标识,不是 namespace key。atelier:shop.data 定位数据结构与逻辑来源,id 指定本次业务对象。
成功调用 productPrice 后,返回值应为取得商品的 price 字段。结果已经具有 Product 结构,调用方无需先解析 HTTP 响应或手动转换传输数据。
10.3 读取与字段使用
读取结果可用后,才可读取它的字段。函数中的 product.price 依赖 Product.get 的成功结果;系统必须保持这一依赖。
Preflight 理解结构、引用和成员调用的类型关系,inflight 取得本次数据并交付结果。声明 Product 本身不在 Preflight 中读取商品。
具体读取成员必须在最终规则中具有可检查的参数与返回定义。仅有前面的字段声明不足以证明 get 调用合法。
10.4 结果状态
| 状态 | 调用方需要获知的内容 |
|---|---|
| 成功 | 符合 Product 结构的结果 |
| 缺失 | 目标数据不存在 |
| 失败 | 本次读取无法完成 |
| 未就绪 | 成功结果尚未可用 |
上述函数只展示成功路径。缺失、失败和未就绪不能自动当作合法 Product,也不能默认替换成空字符串或零。
状态的类型与处理语法,以及是否需要显式等待,集中列于规范状态。
10.5 一次读取与持续结果
本节 get 提案按一次读取说明。持续跟随数据变化与一次读取具有不同的可观察行为;是否使用不同表达式或结果类型仍未定义。
UI 可以直接使用成功取得的类型化字段展示内容,跨端通信由平台承担,不要求应用自行解析响应或恢复对象类型。加载、缺失、失败与后续更新仍需要对应的可观察状态;具体访问和呈现关系见资源访问与呈现。
数据读取的协议、缓存和后端绑定不影响上述源码目标,也不在本章选择。
上一章:函数与调用 · 下一章:资源访问与呈现 · 目录