关于apollo-server中的动态字段选择

Regarding dynamic field selection in apollo-server

提问人:Jay Karavadra 提问时间:11/7/2023 最后编辑:Michel FloydJay Karavadra 更新时间:11/9/2023 访问量:19

问:

我正在将 apollo GraphQL 用于后端和前端。我想动态选择客户请求的字段。

在参数的帮助下,我创建了一个函数,该函数通过客户端为我提供选定的字段,并在此基础上从数据库中获取选定的字段。info

解析 器

  selection.fields = .extractSelection(info?.fieldNodes[0]?.selectionSet)

函数实现

.extractSelection = (selectionSet) => {
  const subSelection = {}

  if (selectionSet) {
    selectionSet?.selections?.forEach(selection => {
      if (selection?.selectionSet) {
        if (selection.kind === 'InlineFragment') Object.assign(subSelection, .extractSelection(selection?.selectionSet))
        else subSelection[selection?.name?.value] = .extractSelection(selection?.selectionSet)
      } else {
        subSelection[selection?.name?.value] = 1
      }
    })
  }

  return subSelection
}

我对这个实现有些疑问。 为每个请求执行此函数进行字段选择是否好? 有没有其他方法可以实现这个东西?

我只需要知道这是否好,或者是否有更好的解决方案?

javascript node.js graphql apollo-server

评论


答: 暂无答案