Apollo Server v2-未调用GraphQL解析器

时间:2019-09-28 00:53:16

标签: node.js graphql react-apollo apollo-server express-graphql

我是graphql世界的新手,我正在尝试使用Apollo Server v2设置多个模块化架构和解析器。

我注意到我的解析器顺序存在问题,这很奇怪。 在Object.assign({}, propertiesResolver, agreementsResolver)行中,不会调用由propertiesResolver定义的所有解析程序,因为它是解析程序顺序中的第一个。如果我交换了两组Object.assign({}, agreementsResolver, propertiesResolver)之类的解析器,则现在不会调用由AgreementResolver定义的解析器。

我在这里错过了有关graphql执行的一些重要细节吗?

注意:我的所有架构定义和相应的解析器均已正确定义,我感觉导入顺序不正确。

1 个答案:

答案 0 :(得分:1)

使用Object.assign时:

  

如果目标对象中的属性具有相同的键,则它们将被源中的属性覆盖。以后的源的属性将类似地覆盖以前的源。

Object.assign不会进行深度合并,这大概就是您所期望的。如果两个源具有相同的属性,则仅使用最后一个源的属性。因此,给定两个对象,例如:

const a = {
  Query: {
    foo: () => 'FOO',
  },
}
const b = {
  Query: {
    bar: () => 'BAR',
  },
}

如果您使用Object.assign合并它们,则结果对象将具有与Querya匹配的单个b属性(取决于后面的参数是哪个) )。为了进行合并以合并具有相同名称的属性对象,您应该使用现有的解决方案,例如lodash

const resolvers = _.merge(a, b)

something similar