当前位置: 首页 > 知识库问答 >
问题:

从字段解析器上的父节点获取数据

微生俊捷
2023-03-14

所以我想做的是,如果可能的话,做一个像这样的GraphQL

{
  people {
    _id
    name
    acted {
      _id
      title
      coactors {
        name
      }
    }
  }
}

所以我正在做的是,让演员(人),然后让他们表演的电影,这很有效。然后我试图让那部电影中的联合演员。我想把当前演员的id传递给联合演员字段,作为这样一个论点:

{
  people {
    _id
    name
    acted {
      _id
      title
      coactors(actor: people._id) {
        name
      }
    }
  }
}

显然,我遇到了一个错误,不知道这是否可以在内部实现。

这是我喜欢的类型:

const MovieType = new GraphQLObjectType({
    name: 'movie',
    fields: () => ({
        _id: {
            type: GraphQLInt
        },
        title: {
            type: GraphQLString
        },
        tagline: {
            type: GraphQLString
        },
        released: {
            type: GraphQLInt
        },
        actors: {
            type: new GraphQLList(PersonType),
            resolve: (movie) => {
                return [];
            }
        },
        coactors: {
            type: new GraphQLList(PersonType),
            args: {
                actor: {
                    type: GraphQLInt
                }
            },
            resolve: (movie, args) => {
                getCoActorsFor(movie, args.actor) // How can I do something like this
                    .then((actors) => {
                        return actors;
                    })
            }
        }
    })
});

const PersonType = new GraphQLObjectType({
    name: 'person',
    fields: ()=> ({
        _id: {
            type: GraphQLInt
        },
        name: {
            type: GraphQLString
        },
        born: {
            type: GraphQLInt
        },
        acted: {
            type: new GraphQLList(MovieType),
            resolve: (person) => {

                return [];

            }
        }
    })
});

共有1个答案

公冶弘壮
2023-03-14

如果不将查询分成两个查询,这是不可能的,因此您可以将第一个查询的结果作为变量提供给参与者以提供给第二个查询。

与使用变量不同,您可以让“表演”返回的电影对象包含对演员的引用,而不是当您要求“合作演员”时,您手头有该信息来做您想做的事情。

然而,这种类型的应用编程接口也是一种反模式——如果子对象依赖于父对象的上下文,那么就更难缓存和理解。我认为你应该问自己,为什么电影对象除了演员之外还必须返回共同演员。如果共同演员只是相同的演员列表,但删除了原始演员,这似乎很容易在客户端发生,因为上下文信息更容易获得。

 类似资料:
  • 我正在我的程序中使用提升property_tree。我已将树设置为使用自定义路径类型。我正在寻找的是获取特定节点的父节点ID。 下面是一个例子: 结果如预期: 我需要的是一种不永久存储节点的完整id的方法。我想的是一种简单地获取它的父节点id并将其推到路径的前面等等到顶层的方法。但是我似乎在property_tree中找不到这样做的方法。这可能吗?如果没有,对于这种情况还有其他计算完整路径的方法吗

  • 我可以使用以下方法获取第一个

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗? 更新问题,使其成为Stack Overflow 的主题。 6年前关闭。 我的mySQL数据库中有如下表: 对于谓词,它将具有如下树视图: 我想创建一个可以选择起始节点并为此获得所有父节点的表单。例如,通过选择我想要获得: 步骤2: 有什么方法可以使用以下简单文本来打印此节点: 问题答案: 您的数据可以在RDF中表

  • 问题内容: 我托管了5个片段,在每个片段上我都需要填写一些字段。 我想从中获取这些字段的值。我尝试了类似的东西: AddActivity.java FragPagerAdapter.java OtherFragment.java 公共类OtherFragment扩展Fragment {Button btn; 更新 的问题我总是得到EditText(而其他字段要获得)的问题等于null如果它们位于片

  • 我已经玩了一段时间的AST,试图从Eclipse获取与这个插件解析的给定节点相关联的行和列信息。根据这里文档化的api,我发现方法可以给出解析的文件字符的位置,但这不是我想要的。 我在CompilationUnit类api文档中找到了和方法,根据我的理解,这两个方法可以起到作用。参数与方法通过执行返回的参数一样。 现在,问题是在源文件上获取行和列的两种方法似乎并不是对所有节点都可用的。例如,方法声