首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未知字段‘`edges`’在类型‘`Query`’上

未知字段‘`edges`’在类型‘`Query`’上
EN

Stack Overflow用户
提问于 2018-03-26 02:23:27
回答 1查看 3.2K关注 0票数 0

当我试图在我的项目中运行relay-compiler时,我从标题中得到了错误。我使用graphql /graphene作为后端graphql服务器。这是我的模式的简写副本。

grove.gql_schema.py:

代码语言:javascript
复制
from graphene_django import DjangoObjectType
from graphene_django.filter import DjangoFilterConnectionField

from .models import Tree

class TreeNode(DjangoObjectType):
    class Meta:
        model = Tree
        filter_fields = ['owner']
        interfaces = (relay.Node,)

class Query(ObjectType):

    def resolve_my_trees(self, info):
        if not info.context.user.is_authenticated:
            return Tree.objects.none()
        else:
            return Tree.objects.filter(owner=info.context.user)
            my_trees = DjangoFilterConnectionField(TreeNode)
            tree = relay.Node.Field(TreeNode)

project.gql_schema:

代码语言:javascript
复制
class Query(grove.gql_schema.Query, graphene.ObjectType):
    pass

schema = graphene.Schema(query=Query)

使用该设置,我可以在GraphiQL中成功地运行以下查询

代码语言:javascript
复制
query   {
  myTrees {
    edges {
      node {
        id
      }
    }
  }
}

到目前为止还不错,但现在我正在尝试构建一个可以使用此查询的客户端组件。

jsapp/components/index.jsx:

代码语言:javascript
复制
import React from 'react';
import {graphql, QueryRenderer} from 'react-relay';

import environment from '../relay_env'

const myTreesQuery = graphql`
  query componentsMyTreesQuery {
    edges {
      node {
        id
      }
    }
  }
`;

export default class App extends React.Component {
  render() {
    return (
      <QueryRenderer
        environment={environment}
        query={myTreesQuery}
        variables={{}}
        render={({error, props}) => {
          if (error) {
            return <div>Error!</div>;
          }
          if (!props) {
            return <div>Loading...</div>;
          }
          return <div>User ID: {props.edges}</div>;
        }}
      />
    );
  }
}

这个查询是相同的,但是当我运行relay-compiler --src ./jsapp --schema ./schema.graphql --extensions js jsx时我得到了错误:

代码语言:javascript
复制
GraphQLParser: Unknown field `edges` on type `Query`.
Source: document `componentsMyTreesQuery` file: `components/index.jsx`.

如果我使用由Django graphaql_schema管理命令生成的graphaql_schema模式或由get-graphql-schema检索的.graphql模式,则会出现此错误。

我错过了什么部分?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-15 07:19:02

我可能有点晚了,但在我看来,您似乎是在询问模式根部的边沿,即片段:

代码语言:javascript
复制
const myTreesQuery = graphql`
  query componentsMyTreesQuery {
    edges {
      node {
        id
      }
    }
  }
`;

我认为可以改为:

代码语言:javascript
复制
const myTreesQuery = graphql`
  query componentsMyTreesQuery {
    myTrees {
      edges {
        node {
          id
        }
      }
    }
  }
`;

关键字query后面的文本引用的是“查询”的名称,而不是架构的根。如果您使用的是中继现代(我假设您使用的是QueryRenderer ),那么编译器应该对您大喊大叫,将您的片段的名称修改为反映它存储在其中的文件名。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49483086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档