[英]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.