Federated Subgraph with Entity Reference
Complete federated subgraph implementation with entity definition and reference resolver
import { buildSubgraphSchema } from '@apollo/subgraph';
import { ApolloServer } from '@apollo/server';
import gql from 'graphql-tag';
const typeDefs = gql`
extend schema
@link(url: "https://specs.apollo.dev/federation/v2.0",
import: ["@key", "@shareable", "@external"])
type User @key(fields: "id") {
id: ID!
email: String!
name: String!
}
type Query {
user(id: ID!): User
}
`;
const resolvers = {
User: {
__resolveReference(user: { id: string }, context) {
return context.dataSources.users.findById(user.id);
},
},
Query: {
user(_, { id }, context) {
return context.dataSources.users.findById(id);
},
},
};
const server = new ApolloServer({
schema: buildSubgraphSchema({ typeDefs, resolvers }),
});