Files

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 可以直接使用成功取得的类型化字段展示内容,跨端通信由平台承担,不要求应用自行解析响应或恢复对象类型。加载、缺失、失败与后续更新仍需要对应的可观察状态;具体访问和呈现关系见资源访问与呈现。

数据读取的协议、缓存和后端绑定不影响上述源码目标,也不在本章选择。

上一章:函数与调用 · 下一章:资源访问与呈现 · 目录