Skip to content

PATCH link 字段后 title 丢失(缓存未正确刷新) #3130

@androidfans

Description

@androidfans

问题描述

通过 API PATCH 记录的 link 字段时,如果只传 { id: "recXxx" } 不带 title,该 link 字段的 title 会丢失。后续 GET 请求也无法获取到 title,直到 Redis 缓存被清除。

复现步骤

  1. POST 创建记录,link 字段传 { id: "recXxx" }
curl -X POST .../api/table/{tableId}/record \
  -d '{"fieldKeyType":"dbFieldName","records":[{"fields":{"my_link":{"id":"recTargetId"}}}]}'

响应正常返回 title:

{ "my_link": { "id": "recTargetId", "title": "目标记录标题" } }
  1. PATCH 同一条记录的同一个 link 字段,传相同的 { id }
curl -X PATCH .../api/table/{tableId}/record/{recordId} \
  -d '{"fieldKeyType":"dbFieldName","record":{"fields":{"my_link":{"id":"recTargetId"}}}}'

响应中 title 丢失:

{ "my_link": { "id": "recTargetId" } }
  1. GET 读取该记录,title 同样缺失:
{ "my_link": { "id": "recTargetId" } }
  1. 执行 redis-cli FLUSHALL 清除缓存后,GET 读取恢复正常:
{ "my_link": { "id": "recTargetId", "title": "目标记录标题" } }

预期行为

PATCH link 字段后,title 应从目标表的主字段实时解析并正确返回。PATCH 响应和后续 GET 请求都应包含 title。

实际行为

PATCH 响应中 link 缺少 title,且该结果被 Redis 缓存,导致后续 GET 也获取不到 title。

Workaround

PATCH 时手动带上 title:{ id: "recTargetId", "title": "目标记录标题" },可以避免 title 丢失。

环境

  • Teable: latest (Docker)
  • 存储: PostgreSQL
  • 缓存: Redis

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions