Javascript 我的ObjectType正在返回一个空对象

Javascript 我的ObjectType正在返回一个空对象,javascript,node.js,express,graphql,graphql-js,Javascript,Node.js,Express,Graphql,Graphql Js,所以我有两个objecttype,我试图将它们包含进来以建立关系,其中一个有效,另一个只是返回一个空对象,我不知道为什么 这一个可以工作,它会记录ranktype,工作正常 const Rank=require(“../model/RankModel”) 常量{RankType}=require('./rank') console.log(RankType) /** *定义分支类型 */ const BranchType=新的GraphQLObjectType({ 名称:“分行”, 字段:{ i

所以我有两个objecttype,我试图将它们包含进来以建立关系,其中一个有效,另一个只是返回一个空对象,我不知道为什么

这一个可以工作,它会记录ranktype,工作正常

const Rank=require(“../model/RankModel”)
常量{RankType}=require('./rank')
console.log(RankType)
/**
*定义分支类型
*/
const BranchType=新的GraphQLObjectType({
名称:“分行”,
字段:{
id:{type:GraphQLID},
名称:{type:GraphQLString},
颜色:{type:GraphQLString},
排名:{
类型:GraphQList(RankType),
解析:异步(分支)=>{
返回等待秩.find({branch:branch.id})
}
}
}
})
module.exports.BranchType=BranchType
这是正在破裂的那个

const Rank=require(“../model/RankModel”)
const Branch=require(“../model/BranchModel”)
const{BranchType}=require('./分支')
console.log(BranchType)
/**
*定义等级类型
*/
const RankType=新的GraphQLObjectType({
姓名:“职级”,
字段:{
id:{type:GraphQLID},
名称:{type:GraphQLString},
速记:{type:GraphQLString},
分支:{
类型:BranchType,
解析:异步(秩)=>{
return wait Branch.findById(rank.Branch)
}
}
}
})
module.exports.RankType=RankType
这给了我一个“消息”的错误:“Rank.branch的类型必须是输出类型,但get:undefined。”

模型/关系:

BranchModel:

const mongoose=require('mongoose');
const Schema=mongoose.Schema;
让branchSchema=新模式({
姓名:{
类型:字符串,
要求:正确,
独一无二:真的
},
颜色:{
类型:字符串,
要求:正确,
独一无二:真的
},
排名:[{
类型:Schema.Types.ObjectId,
裁判:“排名”
}]
});
module.exports=mongoose.model('Branch',branchSchema)
兰克模型

const mongoose=require('mongoose'))
const Schema=mongoose.Schema
让rankSchema=新模式({
姓名:{
类型:字符串,
要求:正确,
独一无二:真的
},
速记:{
类型:字符串,
要求:正确,
独一无二:真的
},
分支机构:{
类型:Schema.Types.ObjectId,
参考:“分支机构”
}
});
module.exports=mongoose.model('Rank',rankSchema);
回答

/**
*定义等级类型
*/
const RankType=新的GraphQLObjectType({
姓名:“职级”,
字段:()=>({
id:{type:GraphQLID},
名称:{type:GraphQLString},
速记:{type:GraphQLString},
分支:{
类型:require('./分支')。BranchType,
解析:异步(秩)=>{
console.log(rank.branch)
return wait Branch.findById(rank.Branch)
}
}
})
})
module.exports.RankType=RankType

在我看来,您需要根据我从module.exports中看到的情况,像在需要RankType时一样对BranchType进行分解

改变

const BranchType = require('./branch')


我试过了,它应该在代码中,我只是在编辑一些东西。当我这样做时,我会收到以下错误:“消息”:“Rank.branch的类型必须是Output type,但get:undefined。”您是否尝试使用
Rank.branch
,正在解析的字段解析
branch
字段?@xadm yes,因为objectID链接到Rank.branch。但是,当I console.log BranchType返回此rank.js文件中的未定义。当我需要它并在user.js文件中记录它时,它工作得很好。如何通过读取相同的值(之前未定义)来定义值?@xadm我遇到的问题是{BranchType}未定义。否则一切都会成功。出于某种原因,即使我正在导出const BranchType,但它在这个特定文件中未定义。当我在另一个文件中需要它时,它可以正常工作。我只是不知道为什么这个文件中没有定义。如果我注释掉Rank.branch,但{BranchType}仍然是未定义的对象,
字段
可以使用返回对象的函数,则该方法有效<代码>字段:()=>({branch,…})这会延迟函数内部代码的计算,直到调用它为止。例如,您可以在那里调用require来延迟其计算,从而避免循环requires。
const { BranchType } = require('./branch')