调用forceFetch()

时间:2016-02-04 20:54:19

标签: relayjs

我正在尝试使用forceFetch()在收到服务器端推送通知时更新UI,但我在浏览器控制台中收到以下错误(网络上没有实际的graphql查询编辑:查询实际到达服务器):

Server request for query Main failed for the following reasons:

1. args is not defined
   query Main{node(id:"QWNjb3VudDow"){...F1}} fragment F0 on Si
              ^^^

以下是代码的简化部分:

@relayContainer({
    fragments: {
        account: () => Relay.QL` fragment on Account {
            id
            userInSite {
                id
                site {
                    id
                    name
                }
            }
        }`,
    },
})
class SiteSettings extends Component {
    render() {
        return <div>
            {this.props.account.userInSite.site.name}
        </div>;
    }
    componentWillMount() {
        setTimeout(() => this.props.relay.forceFetch(), 2000);
    }
}

我不确定args指的是什么。我尝试将参数传递给forceFetch,但我没有尝试过。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

事实证明,当错误来自服务器时,我正在寻找错误的地方(浏览器)。

有人向我指出(感谢Discord用户组!),此表单中出现的错误始终来自服务器。

具体来说,args是GraphQL架构中resolve函数的第二个参数。事实证明,我的globalID到对象函数(从nodeDefinitions导入的graphql-relay)由于来自解析函数的错误复制和粘贴而出现错误,其中确实存在args参数现在不见了。