首先关闭我的graphql数据模型:
type Human {
id: !String,
name: !String,
children: [Human]
}
Run Code Online (Sandbox Code Playgroud)
我正在使用的唯一路由(中继路由配置):
class extends Relay.Route {
static queries = {
human: () => Relay.QL`query RootQuery { viewer }`
};
static routeName = 'AppHomeRoute';
}
Run Code Online (Sandbox Code Playgroud)
列表组件:
class HumanList extends Component {
render() {
let {children} = this.props.human;
let subListsHTML = human ? children.map(child => (
<HumanListItem key={child.id} human={child}/>
)) : '';
return <ul>{subListsHTML}</ul>;
}
}
export default Relay.createContainer(HumanList, {
fragments: {
human: () => Relay.QL`
fragment on Human {
children { …Run Code Online (Sandbox Code Playgroud) 我有一个树结构。以文件夹为例。
如何使用 GraphQL 将嵌套查询查询到 N 级。
让我们举个例子,因为我在课堂上有以下属性。
public class DocumentField
{
public int Id { get; set; }
public string Name { get; set; }
public List<DocumentField> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
服务器端的设计方式是,如果有孩子,那么它将作为孩子包括在内。但是 graphql 层正在限制它,因为我的查询如下。
以下查询不会带来孩子的结果。
query ($folderId: Int!) {
folder(folderId: $folderId) {
id,
name
}
}
Run Code Online (Sandbox Code Playgroud)
以下查询给出错误为:嵌套查询 DocumentFieldICollection 类型的字段子项必须有一个子选择
query ($folderId: Int!) {
folder(folderId: $folderId) {
id,
name,
children
}
}
Run Code Online (Sandbox Code Playgroud)