С помощью graphql-yoga вы можете просто импортировать свою схему, выполнив следующие действия: typeDefs: './src/schema.graphql'. Есть ли аналогичный способ сделать это с apollo-server-express?
Если нет, как импортировать typeDefs из внешнего файла .graphql?


Вы можете использовать функцию makeExecutableSchema для передачи typeDefs. Что-то вроде этого:
import { makeExecutableSchema } from 'graphql-tools';
import mySchema from './src/schema.graphql';
const app = express();
const schema = makeExecutableSchema({
typeDefs: [mySchema],
resolvers: {
...
},
});
app.use(
'/graphql',
graphqlExpress({ schema })
);
Я нашел способ сделать это, используя grahpql-import, который делает именно то, что мне нужно. См. Пример кода ниже:
import { ApolloServer } from 'apollo-server-express'
import { importSchema } from 'graphql-import'
import Query from './resolvers/Query'
const typeDefs = importSchema('./src/schema.graphql')
const server = new ApolloServer({
typeDefs,
resolvers: {
Query
}
})
const app = express()
server.applyMiddleware({ app })
app.listen({ port: 4000 })
**
ОБНОВЛЕНИЕ: graphql-import v0.7 +
**
importSchema теперь является асинхронным, и с ним следует обращаться как с обещанием. Просто оберните его в функцию async и просто await.
async function start() {
const typeDefs = await importSchema(".src/schema.graphql")
}
@OtmanBouchari Просто оберните его в асинхронную функцию и дождитесь результата :)
Текущая версия graphql-import возвращает обещание, которое приводит к ошибке!