我正在玩接力入门套件。我也用过 sangria创建一个 graphql 服务器。现在,我正在尝试将两者联系在一起。
在 relay-starter-kit 中,每次更改 schema 时,都需要运行一个脚本来重新生成 schema.json 文件。但是由于 graphql 支持模式自省(introspection),我想知道是否有一种方法可以配置我的中继应用程序以在服务器启动时自省(introspection)模式。
有谁知道这是否可行或想出如何做到这一点?
最佳答案
定义一个 babelRelayPlugin.js(在验证客户端 graphql 查询时由 webpack 运行):
var babelRelayPlugin = require('babel-relay-plugin');
var introspectionQuery = require('graphql/utilities').introspectionQuery;
var request = require('sync-request');
var url = 'http://localhost:3000/graphql';
var response = request('POST', url, {
qs: {
query: introspectionQuery
}
});
var schema = JSON.parse(response.body.toString('utf-8'));
module.exports = babelRelayPlugin(schema.data, {
abortOnError: true,
});
当然,将 url 变量更改为您用于开发的任何服务器 url。 在 webpack 中,在您的加载器定义中包含以下内容:
query: {stage: 0, plugins: ['./babelRelayPlugin']}
并指向上面的babelRelayPlugin.js文件的位置。
关于facebook - 中继应用程序 : How to introspect schema on server?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32178553/