Javascript GraphQL类型嵌套和对类型的循环依赖

Javascript GraphQL类型嵌套和对类型的循环依赖,javascript,graphql,relayjs,relay,graphql-js,Javascript,Graphql,Relayjs,Relay,Graphql Js,这里我有三种类型 工作类型 员工类型 SeekerType 一份工作将只有一名创建它的雇主 const JobsType = new GraphQLObjectType({ name: 'JobsType', fields: { jobsId: { type: GraphQLID, resolve: obj => obj._id, }, title: { type: GraphQ

这里我有三种类型

工作类型

员工类型

SeekerType

一份
工作
将只有一名创建它的
雇主

const JobsType = new GraphQLObjectType({
    name: 'JobsType',
    fields: {
        jobsId: {
            type: GraphQLID,
            resolve: obj => obj._id,
        },
        title: { type: GraphQLString },
        description: { type: GraphQLString },
        experience: { type: GraphQLString },
        position: { type: GraphQLString },
        openings: { type: GraphQLInt },
        employer: {
            type: EmployerType
            resolve: () => // somedata here
        }
    },
});
一个
雇主
可以创建多个
工作
so

const EmployerType = new GraphQLObjectType({
    name: 'EmployerType',
    fields: {
        userId: {
            type: GraphQLID,
            resolve: obj => obj._id,
        },
        company: { type: GraphQLString },
        email: { type: GraphQLString },
        password: { type: GraphQLString },
        industry: { type: ENUM.IndustryType },
        ownerShip: { type: ENUM.OwnerShipType },
        website: { type: GraphQLString },
        jobs: {
            type: JobsType,
            resolve: (obj) => // some data to resolve
        }
    },
});
一个
求职者
可以应用于许多
工作

const SeekerType = new GraphQLObjectType({
    name: 'SeekerType',
    fields: {
        userId: {
            type: GraphQLID,
            resolve: obj => obj._id,
        },
        email: { type: GraphQLString },
        password: { type: GraphQLString },
        firstName: { type: GraphQLString },
        lastName: { type: GraphQLString },
        education: { type: GraphQLString },
        address: { type: GraphQLString },
        jobs: {
            type: JobsType,
            resolve: (obj) => // some data to resolve
        }
    },
});
因此在这里,它似乎对
GraphQLObjectType

Jobs
包含
employeertype
,再次
employeertype
包含
Jobs
,其中as
job
再次包含
employeertype

就这样

{
    job {
        jobId,
        jobTitle,
        employer {
            userId,
            company,
            email,
            job {
                jobId, 
                jobTitle,
                employer {
                    userId,
                    company,
                    email
                }
            }
        }
    }
}
随着依赖关系越来越深,这不是正确的方法

同样适用于
SeekerType

{
    seeker {
        userId,
        email,
        firstName,
        lastName,
        job {
            jobId,
            title,
            description,
            employer {
                userId,
                company,
                email,
                job {
                    jobId,
                    title,
                    employer {
                        userId,
                        company
                    }
                }
            }
        }
    }
}

这个问题的解决方案可能是什么我不确定你的问题是什么?您试图解决的问题是什么?我的问题是如何维护多个自定义
GraphQLObjectType
,并向它们提供相关数据