Я пытаюсь создать архитектуру микросервиса graphql и хочу иметь возможность динамически обновлять свои схемы со свойствами других серверов.
Так, например, у меня есть служба library
с этой схемой
type Query {
movie: [Movie]
}
enum Status {
IN_LIBRARY
WISHLIST
}
type Movie {
id: Int
status: Status
}
И я хочу расширить объект фильма со свойствами из другого сервиса tmdb
со следующей схемой
type Query {
movie(filter: MovieFilter): [Movie]
}
type Movie {
id: Int
title: String
tagline: String
overview: String
backdrop: String
poster(width: Int): String
budget: Int
genre: [String]
release(format: String): String
}
Я видел пару статей, где две схемы сшитывроде как, но они всегда предполагают наличие 2 удаленных графических серверов, тогда как я хочу запрашивать tmdb
из library
только по запросу.
Возможно ли это вообще?
Мой текущийНастройка для library
выглядит следующим образом:
var app = express();
app.use(
"/graphql",
graphqlHTTP(async (req, res, graphQLParams) => ({
schema: buildSchema(fs.readFileSync("assets/schema.graphql", "utf8")),
rootValue: await server(req, graphQLParams),
graphiql: true
}))
);