Error: Can only create List of a GraphQLType but got: function GraphQLObjectType(config) , in GraphQL?
Error: Can only create List of a GraphQLType but got: function GraphQLObjectType(config) , in GraphQL?
我正在 GraphQL 上开发一个演示项目。却卡在了这里。我想作为结果发送整个对象。
我要发送的对象是:
exports.fakeDatabase = {
1: {
id: 1,
name: 'Abhay',
description:'This is Abhay\'s Database'
},
2: {
id: 2,
name:'Bankimchandra',
description: 'This is Bankimchandra\'s Database'
},
3: {
id: 3,
name:'chandu',
description: 'This is chandu\'s Database'
}
};
但是当我发送访问请求时出现错误:
Error: Can only create List of a GraphQLType but got: function GraphQLObjectType(config) {
_classCallCheck(this, GraphQLObjectType);
(0, _assertValidName.assertValidName)(config.name, config.isIntrospection);
this.name = config.name;
this.description = config.description;
if (config.isTypeOf) {
(0, _invariant2.default)(typeof config.isTypeOf === 'function', this.name + ' must provide "isTypeOf" as a function.');
}
this.isTypeOf = config.isTypeOf;
this._typeConfig = config;
}.
我的代码是-
schema.js:
const graphql = require('graphql');
var schema = {};
schema.getAllUser = new graphql.GraphQLObjectType({
name: 'getAllUser',
fields: {
data:{type:new graphql.GraphQLList(graphql.GraphQLObjectType)} // What should I do here to send the whole `fakeObject`
}
})
module.exports = schema;
Query.js:
const graphql = require('graphql');
const userType = require('../schemas/schemaUserType');
const fakeDatabase = require('../assets/database');
const config = require('../config/config');
var schema = {};
module.exports = schema;
const queryType = new graphql.GraphQLObjectType({
name: 'Query',
fields: {
getAllUser: {
type: userType.getAllUser,
args: {
}, resolve: function () {
return fakeDatabase.fakeDatabase;
}
}
}
});
schema.queryTypq1 = new graphql.GraphQLSchema({ query: queryType });
server.js:
var app = require('express')();
var graphHTTP = require('express-graphql');
const schema = require('./queries/queryType');
app.use('/graphql', graphHTTP({
schema: schema.queryTypq1,
graphiql: true
}));
app.listen(4000, () => { console.log('Server is running on port: 4000'); });
请让我明白我应该怎么做才能发送对象fakeDatabase
第一个fakeDatabase
应该是一个数组[]
因为字段data
类型在schema.getAllUser
[=22中是GraphQLList
=]
其次,您必须使用字段 id
、name
和 description
[=38= 创建一个 GraphQLObjectType
]
可能是这样的...
exports.fakeDatabase = [
{
id: 1,
name: 'Abhay',
description: 'This is Abhay\'s Database'
},
{
id: 2,
name: 'Bankimchandra',
description: 'This is Bankimchandra\'s Database'
},
{
id: 3,
name: 'chandu',
description: 'This is chandu\'s Database'
}
]
和表示数据的 GraphQLObjectType
const fakeDatabaseType = new GraphQLObjectType({
name: 'fakeDatabase',
fields: {
id: { type: GraphQLID },
name: { type: GraphQLString },
description: { type: GraphQLString },
},
});
const graphql = require('graphql');
var schema = {};
schema.getAllUser = new graphql.GraphQLObjectType({
name: 'getAllUser',
fields: {
data: {
type: new graphql.GraphQLList(fakeDatabaseType),
resolve: function (obj) { /* obj is the parent object
containing the data passed from root query resolver */
return obj;
},
}
}
})
module.exports = schema;
const graphql = require('graphql');
const userType = require('../schemas/schemaUserType');
const fakeDatabase = require('../assets/database');
const config = require('../config/config');
var schema = {};
module.exports = schema;
const queryType = new graphql.GraphQLObjectType({
name: 'Query',
fields: {
getAllUser: {
type: schema.getAllUser,
args: {
}, resolve: function () {
return fakeDatabase; // passing the fake array
}
}
}
});
schema.queryTypq1 = new graphql.GraphQLSchema({ query: queryType });
希望对您有所帮助!!
我正在 GraphQL 上开发一个演示项目。却卡在了这里。我想作为结果发送整个对象。 我要发送的对象是:
exports.fakeDatabase = {
1: {
id: 1,
name: 'Abhay',
description:'This is Abhay\'s Database'
},
2: {
id: 2,
name:'Bankimchandra',
description: 'This is Bankimchandra\'s Database'
},
3: {
id: 3,
name:'chandu',
description: 'This is chandu\'s Database'
}
};
但是当我发送访问请求时出现错误:
Error: Can only create List of a GraphQLType but got: function GraphQLObjectType(config) {
_classCallCheck(this, GraphQLObjectType);
(0, _assertValidName.assertValidName)(config.name, config.isIntrospection);
this.name = config.name;
this.description = config.description;
if (config.isTypeOf) {
(0, _invariant2.default)(typeof config.isTypeOf === 'function', this.name + ' must provide "isTypeOf" as a function.');
}
this.isTypeOf = config.isTypeOf;
this._typeConfig = config;
}.
我的代码是-
schema.js:
const graphql = require('graphql');
var schema = {};
schema.getAllUser = new graphql.GraphQLObjectType({
name: 'getAllUser',
fields: {
data:{type:new graphql.GraphQLList(graphql.GraphQLObjectType)} // What should I do here to send the whole `fakeObject`
}
})
module.exports = schema;
Query.js:
const graphql = require('graphql');
const userType = require('../schemas/schemaUserType');
const fakeDatabase = require('../assets/database');
const config = require('../config/config');
var schema = {};
module.exports = schema;
const queryType = new graphql.GraphQLObjectType({
name: 'Query',
fields: {
getAllUser: {
type: userType.getAllUser,
args: {
}, resolve: function () {
return fakeDatabase.fakeDatabase;
}
}
}
});
schema.queryTypq1 = new graphql.GraphQLSchema({ query: queryType });
server.js:
var app = require('express')();
var graphHTTP = require('express-graphql');
const schema = require('./queries/queryType');
app.use('/graphql', graphHTTP({
schema: schema.queryTypq1,
graphiql: true
}));
app.listen(4000, () => { console.log('Server is running on port: 4000'); });
请让我明白我应该怎么做才能发送对象fakeDatabase
第一个
fakeDatabase
应该是一个数组[]
因为字段data
类型在schema.getAllUser
[=22中是GraphQLList
=]其次,您必须使用字段
[=38= 创建一个id
、name
和description
GraphQLObjectType
]
可能是这样的...
exports.fakeDatabase = [
{
id: 1,
name: 'Abhay',
description: 'This is Abhay\'s Database'
},
{
id: 2,
name: 'Bankimchandra',
description: 'This is Bankimchandra\'s Database'
},
{
id: 3,
name: 'chandu',
description: 'This is chandu\'s Database'
}
]
和表示数据的 GraphQLObjectType
const fakeDatabaseType = new GraphQLObjectType({
name: 'fakeDatabase',
fields: {
id: { type: GraphQLID },
name: { type: GraphQLString },
description: { type: GraphQLString },
},
});
const graphql = require('graphql');
var schema = {};
schema.getAllUser = new graphql.GraphQLObjectType({
name: 'getAllUser',
fields: {
data: {
type: new graphql.GraphQLList(fakeDatabaseType),
resolve: function (obj) { /* obj is the parent object
containing the data passed from root query resolver */
return obj;
},
}
}
})
module.exports = schema;
const graphql = require('graphql');
const userType = require('../schemas/schemaUserType');
const fakeDatabase = require('../assets/database');
const config = require('../config/config');
var schema = {};
module.exports = schema;
const queryType = new graphql.GraphQLObjectType({
name: 'Query',
fields: {
getAllUser: {
type: schema.getAllUser,
args: {
}, resolve: function () {
return fakeDatabase; // passing the fake array
}
}
}
});
schema.queryTypq1 = new graphql.GraphQLSchema({ query: queryType });
希望对您有所帮助!!