GraphQL - 不返回接口的空对象

时间:2018-01-09 13:51:18

标签: graphql apollo graphql-js

鉴于

interface Interface {
  common: String!
}

type A implements Interface {
  common: String!
  foo: String!
}

type B implements Interface {
  common: String!
  bar: String!
}

是否可以构造一个查询,默认情况下返回[Interface]仅返回A,并过滤掉B个/空对象?

如果结果集中有AB

query {
  q {
    ... on A {
      foo 
    }
  }
}

返回A和一个空对象(因为我们在其他情况下没有要求数据):

{
  "data": {
    "q": [
      {
        "foo": "foo"
      },
      {}
    ]
  }
}

有关完整示例,请参阅https://launchpad.graphql.com/zrz504kp37

1 个答案:

答案 0 :(得分:0)

我有同样的问题,但在我的情况下,我使用GraphQL(PHP)和一个名为 overblog / GraphQLBundle 的symfony包,它提供了一些回调(事件),在我的情况下,我使用了post执行一个:

public function onPostExecutor(ExecutorResultEvent $event)
{
    $result = $event->getResult();

    // Here I loop over the data array and unset all these empty {} objects.
}

这是供参考的文件: https://github.com/overblog/GraphQLBundle/blob/master/Resources/doc/events/index.md

我猜你可以使用类似JS的东西。