我想使用单个 GQL 查询获取多个项目数据。我能够获取单个项目的数据。但我想要两个不同项目的数据,并且两个项目都有不同的模板。对于 Sitecore JSS 来说,这是否可能是一个 GQL 查询。
有人能帮我解决吗?提前谢谢了。
query GQLQuery($datasource: String!) {
datasource: item(path: $datasource, language: "en") {
{
item1
}
{
item2
}
}
}
3
最佳答案
4
您可以通过多种方式来完成。
1. 如果您的两个项目都属于同一个父项目,那么您可以将父项目指定为数据源项目。以下是示例:您可以通过过滤模板 ID 在单个查询中轻松获取多个项目。
query GQLQuery($datasource: String!) {
datasource: item(path: $datasource, language: "en") {
name
Item1: children(
includeTemplateIDs: ["{B5D116DE-BFE8-4A06-A3FE-90C84320ECCB}"]
) {
name
... on TemplateName {
title {
value
}
subtitle {
value
}
}
}
Item2: children(
includeTemplateIDs: ["{02CDBE64-254B-424B-90C3-E74FDBA02572}"]
) {
name
... on TemplateName {
title {
value
}
subtitle {
value
}
}
}
}
}
回复:
2. 您可以轻松地向查询添加额外项目。赋予它们一个唯一的名称,例如:
query GQLQuery($datasource1: String!, $datasource2: String!, $language:String! ){
item1: item(path:$datasource1, language:$language){
id
}
item2: item(path:$datasource2, language:$language){
title {
value
}
text {
value
}
}
}
回复:
{
"data": {
"item1": {
"id": "11111111111111111111111111111111"
},
"item2": {
"title": {
"value": "Sitecore Experience Platform"
},
"text": {
"value": "<p style=\"line-height: 22px;\">From a single connected platform that also integrates with other customer-facing platforms, to the <a href=\"https://doc.sitecore.net/\" target=\"_blank\" title=\"Sitecore Documentation site\">Sitecore Documentation site</a></p>\r"
}
}
}
}
希望这有帮助!
1
-
嗨 Praveen,谢谢你的详细回答。我已经检查了两种方案是否对我有效。
–
|
你可以在 GraphQL 中将查询组合成 1 个。如下所示:
query GQLQuery($datasource1: String!, $datasource2: String!) {
datasource1: item(path: $datasource1, language: "en") {
{
item1
}
}
datasource2: item(path: $datasource2, language: "en") {
{
item2
}
}
}
|
是的,可以使用 Sitecore JSS 中的单个 GraphQL 查询从多个项目中提取数据,即使它们基于不同的模板。您可以通过在同一查询中指定它们的路径或 ID 来查询多个项目。
您可以按照以下方法修改查询,以便在单个请求中从两个不同的项目获取数据。
query GQLQuery($datasource1Path: String!, $datasource2Path: String!, $language: String!) {
item1: item(path: $datasource1Path, language: $language) {
id
name
template {
id
name
}
}
item2: item(path: $datasource2Path, language: $language) {
id
name
template {
id
name
}
}
}
以下是答复。
希望这有帮助。
|
尽管您询问了有关 graphql 查询以获取多个项目数据的问题,并且您已经收到了有用的信息,但我建议您考虑使用。 它有助于在预定义的结构中创建数据源。
理想情况下,一个组件应该只有一个数据源。您可以像这样创建数据源:
- 数据源模板
- 模板 1
- 模板 2
Praveen Sharma 已经很好地解释了如何从子项中获取数据。这不仅可以帮助您为组件创建通用查询(用于组件的 Graphql 查询部分),还可以规范内容作者遵循查询所期望的层次结构。
希望这有帮助。
|
–
–
–
|