比较来自世界各地的卖家的域名和 IT 服务价格

GraphQL: Query.type 字段类型必须是输出的类型,但是 got: undefined

我尝试了我的第一个方法 GraphQL. 这段代码:

schema.js

:


import {
GraphQLSchema,
GraphQLObjectType,
GraphQLInputObjectType,
GraphQLNonNull,
GraphQLString,
GraphQLBoolean,
GraphQLInt,
GraphQLID,
GraphQLList
} from 'graphql';

import Company from '../../models/Company';

const CompanyType = new GraphQLObjectType/{
name: 'Company',
description: 'Company',
fields: {
_id: {
type: new GraphQLNonNull/GraphQLID/
},
name: {
type: GraphQLString
}
}
}/


const Companies = {
type: CompanyType,
args: {
id: {
name: 'ID',
type: new GraphQLNonNull/GraphQLID/
}
},
resolve/root, params/ {
return Company.find/params.id/.exec//;
}
}


export default new GraphQLSchema/{

query: new GraphQLObjectType/{
name: 'Query',
fields: Companies
}/
}/;


然后在矿山上

server.js

:


import express from 'express';
import bodyParser from 'body-parser';
import mongoose from 'mongoose';
import morgan from 'morgan';
import graphqlHTTP from 'express-graphql';

import schema from './schema';

mongoose.Promise = global.Promise;

// set up example server
const app = express//;
app.set/'port', /process.env.API_PORT || 3001//;


// logger
app.use/morgan/'dev'//;

// parse body
app.use/bodyParser.json///;

// redirect all requests to /graphql
app.use/function redirect/req, res/ {
res.redirect/'/graphql'/;
}/;


app.use/'/graphql', graphqlHTTP/{
schema: schema,
graphqli: true,
pretty: true
}//;


我收到以下错误:


D:\test\node_modules\graphql\jsutils\invariant.js:19
throw new Error/message/;
^

Error: Query.type field type must be Output Type but got: undefined.
at invariant /D:\test\node_modules\graphql\jsutils\invariant.js:19:11/
at D:\test\node_modules\graphql\type\definition.js:361:29
at Array.forEach /native/
at defineFieldMap /D:\test\node_modules\graphql\type\definition.js:352:14/
at GraphQLObjectType.getFields /D:\test\node_modules\graphql\type\definition.js:306:44/
at typeMapReducer /D:\test\node_modules\graphql\type\schema.js:206:25/
at Array.reduce /native/
at new GraphQLSchema /D:\test\node_modules\graphql\type\schema.js:95:34/
at Object.<anonymous> /D:/9. DEV/WORKSPACE/mom/client/graphql/index.js:62:16/
at Module._compile /module.js:570:32/
at loader /D:\test\node_modules\babel-register\lib\node.js:144:5/
at Object.require.extensions./anonymous function/ [as .js] /D:\test\node_modules\babel-register\lib\node.js:154:7/
at Module.load /module.js:487:32/
at tryModuleLoad /module.js:446:12/
at Function.Module._load /module.js:438:3/
at Module.require /module.js:497:17/


</anonymous>
已邀请:

冰洋

赞同来自:

在您写的查询类型的定义内::


fields: Companies


所以它应该是


fields: { Companies }


看着
http://graphql.org/graphql-js/type/
, fields 采用返回对象的对象或函数,此对象的键映射到所有字段字段的名称 /在这种情况下,您计划中的所有请求/.

另外,为了清楚起见,由于请求和突变是相应类型的字段,因此可以更好地调用它们 camelCase, 不是 PascalCase /它是。 { companies: Companies }

君笑尘

赞同来自:

在你的里面 schema.js
, 创建一种对象时 String as


fields: {
name: {type: String}
}


因此,您的自定义字段也是必要的。


fields: {Companies}

要回复问题请先登录注册