Sitecore Headless GraphQL搜索查询:如何仅获取Web数据库最新发布版本?
解决Sitecore Headless GraphQL搜索仅返回Web数据库已发布最新版本的问题
当前你的GraphQL搜索查询会返回master和web数据库中的所有版本项,要实现仅获取已发布到web数据库的最新版本内容,可通过以下关键修改实现:
修改方案
- 限定查询Web数据库:Sitecore的Web数据库仅存储已发布内容,直接指定查询该数据库即可排除master库中未发布的项。
- 过滤最新版本:添加
_latestVersion条件,确保只返回每个内容项的最新发布版本。
修改后的完整查询
query titleSearch { TitleSearch: search( database: "web" # 指定查询Web数据库 where: { name: "_path" value: "{id of specific content tree node}" operator: EQ AND: [ { name: "_language" value: "en" operator: EQ } { name: "pageTitle" value: "in-flight" operator: EQ }, { # 过滤仅返回最新版本 name: "_latestVersion" value: "true" operator: EQ } ] } first: 10 after: "" orderBy: { name: "pageTitle", direction: ASC } ) { Total: total pageInfo { endCursor hasNext } Results: results { ... on Item { pageTitle:field(name:"pageTitle"){ value } url { value: path } } } } }
关键修改说明
- 在
search根字段中添加database: "web"参数,直接将查询范围限定到仅包含已发布内容的Web数据库,从源头上排除master库的未发布项。 - 在
where的AND条件数组中新增_latestVersion过滤规则,确保每个返回的内容项都是其最新的发布版本,避免同一内容的旧版本被返回。
内容的提问来源于stack exchange,提问作者Hassan Farooq
相关产品推荐
相关产品推荐

