Skip to content

[objectql] 字段 defaultValue 解析晚于 beforeInsert hook,派生字段 hook 读到 null #2703

Description

@baozhoutao

概述

字段 defaultValue(含 Field.user({defaultValue:'current_user'}))由运行时在用户 beforeInsert hook 之后才解析。于是「从被默认的字段派生第二个字段」的 hook,读到的是还未填充的 null

定位

  • packages/objectql/src/engine.ts:2143 —— 执行 beforeInsert hook。
  • packages/objectql/src/engine.ts:2181 —— applyFieldDefaults(默认值解析)在其后
    → hook 读到的目标字段仍为 null,依赖它派生的字段算错。

复现(概要)

sales_person: Field.user({ defaultValue: 'current_user' }),POST 不带 sales_person:结果行 sales_person 被正确回填,但 beforeInsert 里派生的 current_status 因当时读到 sales_person == null 而算成 unassigned。显式传 sales_person → hook 看得到 → 正确。

期望

defaultValue(尤其 current_user)解析提前到 beforeInsert hook 之前,让派生 hook 能看到默认值;或至少文档明确当前顺序。


来源(项目 dogfood):steedos-labs/os-tianshun-mtc#29 · 与 #31 同族(#31 为 defaultValue 三问汇总)

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions