Apollo Server v2-GraphQL解析器未被调用

问题描述 投票:0回答:1

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

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

我是否在这里缺少有关graphql执行的一些重要细节?

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

node.js graphql react-apollo apollo-server express-graphql
1个回答
1
投票

使用Object.assign时:

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

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

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

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

const resolvers = _.merge(a, b)

something similar

© www.soinside.com 2019 - 2024. All rights reserved.