[英]Gentics Mesh - Multilanguage support - Cross language in a list of node - GraphQL query
Gentics Mesh 版本:v1.5.1
介绍:
假设我们的模式A具有类型字段:列表和列表类型:节点和允许的模式: B 。 (见(1))。
结果,当在 Gentics Mesh CMS 中选择de语言时,节点a1-DE ( de ) 具有 2 个节点b1-DE 、 b2-EN的列表。
当应用以下 GraphQL 查询时:
{
node(path: "/a1-DE") {
... on A {
path
uuid
availableLanguages
fields {
Bs {
... on B {
path
fields {
id
}
}
}
}
}
}
}
结果是:
{
"data": {
"node": {
"path": "/a1-DE",
"uuid": "30dfd534cdee40dd8551e6322c6b1518",
"availableLanguages": [
"de"
],
"fields": {
"Bs": [
{
"path": "/b1-DE",
"fields": {
"id": "b1-DE"
}
},
{
"path": null,
"fields": null
}
]
}
}
}
}
问题:
为什么结果没有在节点列表中显示 b2-EN 节点? 查询错了吗? 我想得到的结果是节点的默认语言版本( b2-EN ),因为b2-DE尚未贡献。 所以预期的结果:
{
"data": {
"node": {
"path": "/a1-DE",
"uuid": "30dfd534cdee40dd8551e6322c6b1518",
"availableLanguages": [
"de"
],
"fields": {
"Bs": [
{
"path": "/b1-DE",
"fields": {
"id": "b1-DE"
}
},
{
"path": "/b2-EN",
"fields": {
"id": "b2-EN"
}
}
]
}
}
}
}
在文档 (2) 中:
如果未找到其他匹配内容,将应用回退到配置的默认语言。 如果这也失败,将返回 Null。
有人可以启发我吗?
(1): 架构
{
"name": "A",
"container": false,
"autoPurge": false,
"displayField": "id",
"segmentField": "id",
"urlFields": [
"id"
],
"fields": [
{
"name": "Bs",
"type": "list",
"label": "Bs",
"required": false,
"listType": "node",
"allow": [
"B"
]
},
{
"name": "id",
"type": "string",
"label": "id",
"required": true
}
]
}
通过 GraphQL 加载节点时存在一些已知问题和不一致的行为。 看到这个问题: https://github.com/gentics/mesh/issues/971
在您的情况下,查询的节点列表将始终使用配置的默认语言(在mesh.yml
中)。 在您的情况下,这似乎是de
。 这就是仅英语节点不产生结果的原因。
在解决此问题之前,您可以通过加载节点列表的所有语言来解决此问题:
{
node(path: "/a1-DE") {
... on A {
path
uuid
availableLanguages
fields {
Bs {
... on B {
languages {
path
language
fields {
id
}
}
}
}
}
}
}
}
您将节点列表中所有语言的内容。 这意味着您必须在收到响应后过滤代码中所需的语言。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.