为什么我的graphql嵌套查询返回null?

为什么我的graphql嵌套查询返回null?,graphql,relayjs,Graphql,Relayjs,我是graphql新手,遇到嵌套查询的问题,需要帮助传递id来标识关系 询问 在上面,您可以看到为_Affiliation执行的为空,尽管它在模式中定义为Affiliation类型 type Query { affiliations(affn_id: ID!): [Affiliation] performances(pfrm_id: ID!): [Performance] PERFORMED_FOR_Affiliation(affn_id: ID!): Af

我是graphql新手,遇到嵌套查询的问题,需要帮助传递id来标识关系

询问

在上面,您可以看到为_Affiliation执行的
为空,尽管它在模式中定义为
Affiliation
类型

type Query {
      affiliations(affn_id: ID!): [Affiliation]
      performances(pfrm_id: ID!): [Performance]
      PERFORMED_FOR_Affiliation(affn_id: ID!): Affiliation
      Performance_PERFORMED_FOR(pfrm_id: ID!): [Performance]
    }
PERFORMED\u FOR\u Affiliation
查询类似于
affiliations
仅查询关系应仅返回1个Affiliation(具有匹配的uid)

我假设affn_id没有被正确地传递,也不确定如何正确地传递。为所属关系执行的所属关系是否需要自己的模式

模式 我见过一些使用“节点”和“边缘”类型的模式。因为我有很多其他的关系,这是一个更好的定义图表的方法吗

解析器 模拟数据 及


是的,您应该在解析器中实现它。我想你会在后台有一个数据库,例如
猫鼬

您可以查询性能,并在其中填充从属关系

性能:(root,args)=>{
返回新承诺((解决、拒绝)=>{
performanceModel.find()//查找所有性能
.populate(“为所属关系执行”)//为附属公司添加值
.exec((错误、性能)=>{
如果(!错误){
解析(性能);//解析正确的对象
}否则{
拒绝(错误);
}
});
});

},
看起来正确。您可以提供查询解析器吗?我假设父查询将从关联数组中筛选出匹配的
affn\u id
。听起来我可能返回了错误的查询?是的,我认为您必须明确查找与
affn\u id
的关联。我应该在解析器、对象模式或graphiql查询中实现这一点吗?我尝试在我的文件中添加
PERFORMED\u FOR\u Affiliation(affn\u id:id,pfrm\u id:id):Affiliation
,但没有成功地进行查询。是否打算在Performance
affn\u id
中使用
String
类型,而在Affiliation中使用
id
类型?您还可以提供
/mockData/affiliations.js
中的内容吗?谢谢@Locco0\u 0我确实打算使用mongoose切换到我的db,但目前只使用原始数组进行测试。
type Performance {
    pfrm_id: ID!
    mark: Int
    affn_id: ID!
    PERFORMED_FOR_Affiliation: Affiliation
}

type Affiliation {
    affn_id: ID!
    name: String
    Performance_PERFORMED_FOR: [Performance]
}
import performances from './mockData/performances.js';
import affiliations from './mockData/affiliations.js';

export const resolvers = {
  Query: {
    affiliations: (root, args) => {
      return affiliations;
    },
    performances: (root, args) => {
      return performances;
    },
    PERFORMED_FOR_Affiliation: (root, args) => {
      return affiliations;
    },
    Performance_PERFORMED_FOR: (root, args) => {
      return performances;
    },
  },
};
//affiliations.js
module.exports = [
  {
    "affn_id": "43700F3BE17145399924AC176EACBEF4",
    "name": "Richmond Senior"
  },
  {
    "affn_id": "8BDE709AC757416082950B1BEED0CE0A",
    "name": "Cedar City"
  },
  {
    "affn_id": "123D201BB17545E3B6ECCCCB5FC61FA3",
    "name": "Delta"
  }
]
// performances.js
module.exports = [
  {
    pfrm_id: "6BD41C6B1C4B43D199DE42A4A408DF1A",
    mark: 1270000,
    affn_id: "43700F3BE17145399924AC176EACBEF4",
  },
  {
    pfrm_id: "EA2FBC6AB891460EA557F5B60984AD8A",
    mark: 1422400,
    affn_id: "8BDE709AC757416082950B1BEED0CE0A",
  },
  {
    pfrm_id: "54A6EEB9552C49AC9F7A87E68AC272A2",
    mark: 1422400,
    affn_id: "123D201BB17545E3B6ECCCCB5FC61FA3",
  },
]