docs(kernel): services.data 的 Parameters 补上 canonical QueryOptionsV2 词汇,Example 同批换用 (#6002) - #6324
Merged
Conversation
…词汇 (#6002) Methods 一节写明 find 接受 QueryOptions | QueryOptionsV2,但 Parameters 只列 legacy 那套(top/skip/filter/sort/select)。canonical source packages/client/src/index.ts 的自述正好相反:QueryOptions 带 @deprecated、 "require translation to QueryAST";QueryOptionsV2 是 "the recommended interface for data.find() queries"。本页因此把 SDK 自称推荐的词汇整个略过。 Parameters 改为并列两套并点明推荐关系(canonical where/fields/orderBy/limit/ offset,legacy filter/select/sort/top/skip 仍受支持、运行时翻译),Example 同批 换用 canonical 词汇。推荐关系由 JSDoc 写死,不是本 PR 的取舍。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BDmDsu2575gDxeMCxXhDE3
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
hotlong
marked this pull request as ready for review
August 7, 2026 14:31
This was referenced Aug 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #6002
content/docs/kernel/runtime-services/data-service.mdx的 Methods 写明find接受两套options,但 Parameters 只教了其中被 SDK 自己标注为 legacy 的那套。本 PR 把两套都列出来、
点明推荐关系,并按分诊提示把 Example 同批换成 canonical 词汇。
推荐关系不是本 PR 的取舍 —— 它由
packages/client/src/index.ts的 JSDoc 写死,本 PR只是把它如实转述到唯一的参考页上。
前提复核(在 worktree 实测,基线
origin/maina682670)data-service.mdx:36—options?: QueryOptions | QueryOptionsV2data-service.mdx:63—(`top`, `skip`, `filter`, `sort`, `select`)QueryOptions自述 legacypackages/client/src/index.ts:138-148QueryOptionsV2自述 recommendedpackages/client/src/index.ts:162-174f192981issue 正文引用的行号(148 / 174)与今天一致,四条陈述逐字复核无漂移。
字段名 ↔ 接口定义映射(逐字取证)
页面新表里的十个字段名,每一个都在
packages/client/src/index.ts的对应接口里逐字存在:whereQueryOptionsV2(:174)fieldsQueryOptionsV2orderByQueryOptionsV2limitQueryOptionsV2offsetQueryOptionsV2filterQueryOptions(:148)selectQueryOptionssortQueryOptionstopQueryOptionsskipQueryOptions零个「页面写了但接口没有」,零个反向缺失。
「两列等价」是实测的,不是推断的
页面写下 "normalizes it into exactly the transport parameters the legacy names produce"
之前,用一次性探针(vitest + stub fetch,读
find真正发出的 query string;跑完即删,未入库)量过:
两串逐字节相同 —— 所以"等价"这个词用得起。
同一次实测也支撑了页面第三段「Use one column per call」:
混写会静默丢键,两个方向都会。页面因此只说"整个 options 对象一起迁移",没有教任何混合写法。
Example before / after
改动是三个 key 的同义替换,加一行说明注释;查询语义、字段、排序方向、条数全部不变:
before
after
orderBy的元素形状不变 ——SortNode是{ field, order }(
packages/spec/src/data/query.zod.ts:53-66),sort与orderBy声明的是同一个类型。与 #5944 / PR #5995 的边界
PR #5995 在本页新增 57 行(Callout、"不是 hook body" 的语境、
ctx.api指路、Canonicalsource 一节、
os:check标记的说明段),并刻意保留了 Example 的 legacy 拼法。逐行核对本 PR对这 57 行的影响:
那行注释(是扩写,不是回退)。
改这 4 行正是分诊 2026-08-06T14:56Z 的明确指示(「建议换,并与 Parameters 一节同批……拆两
次会让同一段落连续动两轮」)。#5995 落定的语境一处未动。
Parameters 里被替换的那条
optionsbullet 不是 #5995 写的,是它之前就存在的原文 —— 也就是本 issue 的靶心。
门禁(均在
git add之后跑)pnpm check:doc-authoring365 files clean — no bare metadata literalspnpm check:role-wordOK (44 baselined file(s), no new occurrences)pnpm check:nul-bytesOK (scanned 5965 tracked text file(s) ... no raw ASCII control bytes)pnpm check:docs-audit-scopescope is in sync with content/docs/: 178 hand-written doc(s)另跑了一项不是仓内门禁的自查:用仓库自己的
@mdx-js/mdx@3.1.1编译改后页面,MDX_PARSE_OK(14455 bytes)。MDX 语法错误是这四道门都不覆盖的一类,值得单独证一次。check:skill-examples不适用:它只编译带{/* os:check */}标记的块,本页的 ts 块刻意不带该标记(页面自己有一段解释为什么)。
实测出的代码漂移(已单独立单,不在本 PR 里修)
上面那次探针顺带量出两处
packages/client的实现缺陷。本单文件面只有content/docs/**,且按 contract-first 不在文档侧糊补丁,故单独立单:
data.find的 canonical options 探测漏掉limit;QueryOptionsV2.expand声明了但从不落到传输参数 #6322(具体缺陷,未打标待 PM 分诊)——find的 canonical 探测键只有where/fields/orderBy/offset,漏了limit:data.find('task', { limit: 20 })这种单键调用走 legacy 分支后无人读
limit,静默丢弃,返回服务端默认页大小、HTTP 200。另
QueryOptionsV2.expand(:186)声明了但两条分支都不映射,一个字符到不了 wire。services.data页把find当稳定主入口,而 canonical source 给find打了@deprecated指向本页未记载的data.query()#6323(observation,finding标签)—— 本页把find当稳定主入口记载,而 canonicalsource 给
find和QueryOptions都打了@deprecated指向data.query()(路线见已关闭的[讨论&决策] 前后端查询协议/OData vs QueryAST 规范化与长期归一方案 #986),而
data.query()本页只字未提。改法需要先定性find是否退场,故不自动入队。给 review 的一个判断点:#6322 的 A 项与本页有交互 —— 本页从此正面推荐 canonical 列,
照抄者会开始直接写
limit,命中面变大。本 PR 没有在页面上加这条 caveat,理由是分诊已明确「按现状写并在 PR 正文记录漂移」,且在参考页里写下消费侧的规避写法正是 contract-first
要避免的形状。若 #6322 一时排不上,可以再补一条 #5638 式的实测注记(那种形状本页已有先例)。
不在本 PR 里
packages/client/**(canonical source 只读)os:check说明段)content/docs里没有第二处用 legacy option key 教data.find的页面;
protocol/objectql/query-syntax.mdx讲的是更低层的IDataEngine.find,不同 surface)content/docs/releases/**.changeset/:纯文档、不发布任何包 ⇒skip-changesetGenerated by Claude Code