Я пытаюсь реализовать graphql на БД, которая использует справочную таблицу. В настоящее время я делаю несколько соединений для каждого элемента.
В настоящее время у меня есть:
type Query {
getProductInfo(id: Int!): Product!
}
type Product {
productAttributes: [ProductAttribute]
}
type ProductAttribute {
languageID: Int
language: String
languageAbbrev: String
regionID: Int
region: String
regionAbbrev: String
}
, где идентификаторы - это поля, объединяемые для атрибута ProductAttribute. Значения String взяты из таблицы поиска, которая возвращает заголовок и аббревиатуру.
Хотя это работает, у меня есть множество элементов, которые имеют регион и язык, а также различные другие свойства, которые используют таблицу поиска.
Я хотел бы реализовать что-то вроде:
type ProductAttribute {
languageID: Int
language: Lookup
regionID: Int
region: Lookup
}
type Lookup {
title
abbrev
}
Я изо всех сил пытаюсь определить, как настроить это в резольверах таким образом, чтобы он работал на различных типах.
Я думал, что это будет более производительным, так как поиск будет вызываться только при запросе, и отдельные запросы могут быть кэшированы.