查询纪律:一个 typed AST 走天下
1 分钟0 条评论
Torchwood 的查询过滤只有一种载体:typed AST。
const page = await tw.server.databases.listDocuments({
databaseId: 'blog',
collectionId: 'posts',
query: {
filter: { isNotNull: { attribute: 'published_at' } },
orders: [{ attribute: 'published_at', desc: true }],
pageSize: 10,
},
})
几条铁律#
- 排序键必须是本集合属性(keyset 游标只编码本集合键值);
- 分页只认
pageToken,没有 offset——meta.next_page_token非空即有下一页; - 服务端零字符串解析,DSL 只是 SDK 的客户端糖。
类型系统挡住了大部分错误用法:字段名、算子、值形态在编译期就有约束。