GraphQL交叉引用抛出错误:字段类型必须是输出类型,但得到:[object object]

GraphQL Cross References throws error: field type must be Output Type but got: [object Object]

本文关键字:类型 object 输出 引用 出错 GraphQL 字段 错误      更新时间:2023-09-26

我目前正在努力与我的GraphQL API,不幸的是它不工作,因为我总是得到错误消息:

Error: Contact.other field type must be Output Type but got: [object Object].

我仍然阅读一些文章和帖子,像GraphQL与明确的错误:查询。示例字段类型必须是输出类型,但得到:[object object],但无论如何它都不起作用,因为答案不能解决我的情况下的错误原因。我希望你能帮助我或者给我一个提示来解决这个问题。我将代码的主要部分附在下面:

ProfileType.js:

const graphql = require('graphql');
const ContactType = require('./ContactType');
const ObjectType = graphql.GraphQLObjectType;
const List = graphql.GraphQLListType;
const ID = graphql.GraphQLID;
const NonNull = graphql.GraphQLNonNull;
const ProfileType = new ObjectType({
  name: 'Profile',
  fields: function () {
    return {
      id: {type: new NonNull(ID)},
      contacts: {type: new List(ContactType)},
    };
  },
});
module.exports = ProfileType;

ContactType.js:

const graphql = require('graphql');
const ProfileType = require('./ProfileType');
const ObjectType = graphql.GraphQLObjectType;
const EnumType = graphql.GraphQLEnumType;
const ContactType = new ObjectType({
  name: 'Contact',
  fields: function () {
    return {
      other: {
        type: ProfileType
      },
      status: {
        type: new EnumType({
          values: {
            REQUESTED: {value: 0},
            COMMITTED: {value: 1}
          },
          name: 'ContactStatus'
        })
      }
    };
  },
});
module.exports = ContactType;

(代表OP发布)

通过将所需的ObjectType移动到fields函数来解决:

const ContactType = new ObjectType({
  name: 'Contact',
  fields: function () {
    const ProfileType = require('./ProfileType');
    // ...
  }
});

否则,ObjectType在循环性方面存在问题。当然,对于ProfileType也必须这样做。

相关文章: