Федерация GraphQL: как потреблять, а не расширять

У меня есть служба, которая возвращает s, которую я могу расширить через GraphQL Federation в службе, возвращающей с. Сервис обзора зависит от s, и эта развязка просто потрясающая!

Еще у меня есть служба заказов, в которой хранятся (помимо прочего) s, у которых есть:

      type OrderItem @key(fields : ["id"]) {
    id: String
    amount: Int
    position: Int
    productId: String
}

Теперь я хочу, чтобы клиенты могли также напрямую выбирать любые поля из тех, на которые ссылается :

      orderItem(id: "123") {
    position
    amount
    product {
        name
        price
    }
}

Если бы я написал нормальный резолвер, чтобы добавить поле, мне пришлось бы продублировать полную модель (и обновлять службу заказов при каждом изменении). Я не хочу этого. Я тоже хочу использовать Федерацию.

Я хочу, чтобы услуга заказа продляла (и тем самым зависела от) , но знать только его id, тогда как сервисная служба не должна ничего знать о сервисе заказа. Итак, это инверсия зависимостей, как видно в сервисе обзора. Я не хочу , чтобы добавить в модель из другой службы, я хочу, чтобы клиент , чтобы иметь возможность потреблять его, не зная мою службу о деталях.

Я предполагал, что так должно быть еще проще, но я слишком слеп, чтобы видеть, что мне нужно делать! Я не мог найти примеров, руководств или чего-либо еще, что бы делало это таким образом.

Буду очень признателен за вашу помощь!

1 ответ

Глупый я! На самом деле это так просто, как я предполагал, я просто гнался за несвязанным (хотя и загадочным для меня) сообщением об ошибке.

Мне просто нужно добавить преобразователь, который возвращает экземпляр моего Product заглушка (т.е. содержащая только id). Остальное работает как шарм!

Другие вопросы по тегам