Apollo GraphQL - 将 .graphql 模式导入为 typeDefs
Posted
技术标签:
【中文标题】Apollo GraphQL - 将 .graphql 模式导入为 typeDefs【英文标题】:Apollo GraphQL - Import .graphql schema as typeDefs 【发布时间】:2019-04-22 10:56:25 【问题描述】:使用 graphql-yoga,您只需执行以下操作即可导入您的架构:typeDefs: './src/schema.graphql'
。 apollo-server-express 有类似的方法吗?
如果没有,如何从外部.graphql
文件中导入typeDefs?
【问题讨论】:
【参考方案1】:您可以使用函数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 )
);
【讨论】:
【参考方案2】:我找到了一种使用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")
【讨论】:
当前版本的 graphql-import 返回一个导致错误的承诺! @OtmanBouchari 只需将其包装在异步函数中并等待结果:)以上是关于Apollo GraphQL - 将 .graphql 模式导入为 typeDefs的主要内容,如果未能解决你的问题,请参考以下文章
Apollo 服务器 2.0 不能与 join-monster-graphql-tools-adapter 和 oracle 一起使用