parseEntityRecordValues()
function parseEntityRecordValues(metadata, raw): Record<string, unknown>;
Defined in: packages/rxdb/src/entity/entity-value.utils.ts:180
按实体元数据把一整条原始记录解码成实体侧的运行时值。
Parameters
| Parameter | Type | Description |
|---|---|---|
metadata | EntityMetadata | 实体元数据;决定每个键按哪种类型解码 |
raw | Readonly<Record<string, unknown>> | 原始记录,典型来源是远端 REST 响应这类 JSON |
Returns
Record<string, unknown>
新对象;只含 raw 里出现过的键
Throws
当某个已声明属性的类型不是 EntityFieldTypeName 的成员时, 由 parseEntityFieldValue 抛出
Remarks
服务于「远端 JSON 直接盖到实体实例上」这一类边界。JSON 没有 Date,日期在线上是 ISO 串;
原样 Object.assign 过去,entity.updatedAt 就从 Date 变成了 string,而
PropertyType.date 的运行时契约是 Date(见 parseEntityFieldValue 的 date 分支)。
下游按契约直接调 .toISOString() 就地抛错 —— 在模板渲染里这一抛会提交抛之前的绑定、
跳过之后的,留下半行更新过的 DOM。
两条刻意的边界:
- 不补键。只映射
raw自身的可枚举键,缺席的字段一个都不添。parseEntityFieldValue把undefined归一化成null,补键等于拿null覆盖实体上本来好好的值。 - 元数据以外的键原样透传。
__etag这类随响应捎带的东西不属于任何已声明属性, 本函数无从解释它,替调用方猜一个类型比留着不动更糟。