问题描述
我在尝试 graphQL 时遇到了一个问题.我想我在架构或解析器上做错了什么.一切都根据文档,但仍然无法获取数据.
I am facing an issue, while trying graphQL. I guess I am doing something wrong at schema or resolver. Everything according to docs but still not able to get the data.
我需要的是在 graphiql 中运行查询的非常简单的用户模型.
What Do I need is very simple user model to run its queries in graphiql.
这是我的代码:下载代码(zip文件)(node-7.5的代码)然后只需运行 npm install 和 npm run build.
Here is my code: Download code (zip file) (code for node-7.5)and then just run npm install and npm run build.
主要文件:server.js、schema.js、models/user.js 和 resolvers/user.js.
Main files: server.js, schema.js, models/user.js and resolvers/user.js.
模型/user.js
const typeDefinitions = `
type User {
id: String!
name: String
type: Int
isActive: Boolean
clients: [String]
}
schema {
query: User
}
`;
export default [typeDefinitions]
解析器/user.js:-
resolvers/user.js:-
const resolverMap = {
User: {},
};
export default resolverMap
schema.js
import { makeExecutableSchema } from 'graphql-tools';
import resolver from '../resolvers/user'
import User from './user';
export default makeExecutableSchema({
typeDefs: User,
resolvers: resolver,
});
server.js:-
server.js:-
import express from 'express';
import bodyParser from 'body-parser';
import routes from './app/routers/index';
import { graphqlExpress } from 'graphql-server-express';
import schema from './app/models/schema'
var app = express(); // create our app w/ express
var database = require('./app/configs/database');
var port = process.env.PORT || 8888; // set the port
app.use(express.static(__dirname + '/public')); // set the static files location /public/img will be /img for users
app.use(morgan('dev')); // log every request to the console
app.use(bodyParser.urlencoded({ 'extended': 'true' })); // parse application/x-www-form-urlencoded
app.use(bodyParser.json()); // parse application/json
app.use(bodyParser.json({ type: 'application/vnd.api+json' })); // parse application/vnd.api+json as json
app.use('/graphql', bodyParser.json(), graphqlExpress({
graphiql: true,
pretty: true,
schema: schema
}));
app.listen(port);
console.log("App listening on port : " + port);
推荐答案
import { graphiqlExpress } from 'graphql-server-express';
app.use('/graphiql', graphiqlExpress({
endpointURL: '/graphql',
}));
你需要使用上面的代码,
You need to use above code,
graphiql: true
我猜不再支持了,您需要导入一个 graphiql 方法并为其传递一个端点
graphiql: true
is not supported anymore I guess,You need to import a graphiql method and pass an endpoint for the same
这篇关于带有 Graphql 的 nodejs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!