我对Relay相对较新,所以这可能是我犯过的一个容易犯的错误,但我已经找了一段时间了,而且我还没有找到任何关于我遇到的问题的信息。
这是我从应用程序中获得的错误:
未捕获错误:不变违规:GraphQLFragmentPointer:查询
<copyField source="field1" dest="search_field"/>
上story
的参数值应为字符串,但设置为Route
。检查该值是否为字符串。
问题是我实际上希望它是10
并且不希望它是字符串。我是否错误地配置了某些内容?
这是我的GraphQL架构:
10
这是我定义的中继路线:
var queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
node: nodeField,
story: {
type: storyType,
args: {
storyID: {
description: 'Story ID',
type: GraphQLInt
}
},
resolve: (root, {storyID}) => {
if (storyID) {
return Story.get(storyID)
} else {
return Story.get(10)
}
}
},
}),
});
这就是我实例化的方式:
export default class extends Relay.Route {
static queries = {
story: () => Relay.QL`
query {
story(storyID: $storyID)
}
`,
};
static paramDefinitions = {
storyID: {
required: false
},
};
static routeName = 'StoryRoute';
};
答案 0 :(得分:2)
好吧,看起来我终于明白了。
根域显然受到严格限制,目前只能没有参数,单个字符串参数或多个字符串参数,直接与提取的对象的ID相连。
在此处查找更多信息:https://github.com/facebook/relay/issues/112 在这里:https://github.com/facebook/relay/issues/94