[英]Get localized data from multilingual schema with GraphQL query
我有以下MongoDB模式。
Item {
_id: ObjectId,
translations: [{
language: String
name: String
}]
}
所以我的Item實例可能看起來像這樣。
{
_id: ObjectId("5ba3bf09d3121aba3ba2f488"),
translations: [
{
language: "en"
name: "a Car"
},
{
language: "de",
name: "der Wagen"
}]
}
我希望能夠通過Graphql用特定語言查詢我的數據。
{
item(where: {language: "en"}) {
name
}
}
因此,它將產生具有這樣形狀的漂亮輸出。
{
name: "a Car"
}
請您告訴我一些好的做法或不錯的方法來設置我的Graphql解析器映射嗎?
我正在使用Apollo服務器。
非常感謝你!
針對特定語言的查詢(具有多個字段)的一般解決方案可能是:
查詢:
query {
item(language: "en") {
name
otherField
}
}
解析器:
{
item: (_, { language }, context) => {
context.language = language;
return {
name: (_, context) => getNameByLang(context.language),
otherField: (_, context) => getOtherByLang(context.language),
};
},
}
或者,如果只有一個翻譯字段:
query {
item {
name(language: "en")
}
}
因此您可以直接在名稱解析器中獲取該語言作為參數。
{
item: () => ({
name: ({ language }) => getNameByLang(language),
})
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.