05 · READMODEL PROJECTION

只读取验证真正需要的字段

让 ReadModel 驱动普通读取的字段投影,并正确处理验证与序列化别名。

配置 ReadModel 后,findfind_onegetget_many 只查询模型验证需要的字段。创建、更新、删除以及未配置 ReadModel 的查询仍读取完整存储对象。

验证与序列化别名

from pydantic import BaseModel, Field


class UserRead(BaseModel):
    display_name: str = Field(
        validation_alias="name",
        serialization_alias="displayName",
    )

这个模型从底层读取 name,执行 model_dump(by_alias=True) 时输出 displayName

配置 行为
validation_alias 用于推断底层存储字段
serialization_alias 只控制对外序列化名称
普通 alias 同时用于验证和序列化
AliasChoices 选择第一个存在的纯字符串候选字段
AliasPath SQL 与 ES 路径语义不同,不自动投影

自定义转换

存储模型可以提供 encode_for_storage(),ReadModel 可以提供 decode_from_storage(),用于处理公共 Repository 边界之外的值转换。

ESC

输入关键词开始搜索文档。

已复制到剪贴板