使用 GraphQL 查询从多语言模式中获取本地化数据
Posted
技术标签:
【中文标题】使用 GraphQL 查询从多语言模式中获取本地化数据【英文标题】:Get localized data from multilingual schema with GraphQL query 【发布时间】:2019-02-25 23:18:58 【问题描述】:我有以下 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 服务器。
非常感谢!
【问题讨论】:
【参考方案1】:针对特定语言查询(具有多个字段)的一般解决方案可能是:
将语言参数传递给查询解析器 将语言存储在解析器上下文中 根据需要使用上下文中的语言查询:
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),
)
【讨论】:
以上是关于使用 GraphQL 查询从多语言模式中获取本地化数据的主要内容,如果未能解决你的问题,请参考以下文章