graphql - 如何使用 Relay Modern 突变进行文件上传?

标签 graphql relay relaymodern

我正在使用react-relay/compat 1.1.0,我需要编写一个能够上传文件的突变。 在 Relay Classic 中,您可以使用 getFiles() 来支持突变中的文件上传:

class AddImageMutation extends Relay.Mutation {
   getMutation() {
     return Relay.QL`mutation{ introduceImage }`;
   }

   getFiles() {
     return {
       file: this.props.file,
     };
   }
   ...
}

但是在 Relay Modern 中没有发现任何上传文件的功能痕迹文档:

const {commitMutation} = require('react-relay');

commitMutation(
  environment: Environment,
  config: {
    mutation: GraphQLTaggedNode,
    variables: Variables,
    onCompleted?: ?(response: ?Object) => void,
    onError?: ?(error: Error) => void,
    optimisticResponse?: ?() => Object,
    optimisticUpdater?: ?(store: RecordSourceSelectorProxy) => void,
    updater?: ?(store: RecordSourceSelectorProxy) => void,
    configs?: Array<RelayMutationConfig>,

    // files: ... ?
  },
);

现代中继是否支持这一点?如果是这样,该怎么做?谢谢。

最佳答案

您必须在 commitMutationconfig 对象中将文件作为对象 uploadables 提供,然后在网络层中实现实际上传,因为对服务器的获取请求必须是多部分形式,而不是 application/json。

参见https://github.com/facebook/relay/issues/1844#issuecomment-316893590获取完整示例。

关于graphql - 如何使用 Relay Modern 突变进行文件上传?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288655/

相关文章:

reactjs - 在graphql中实现多个接口(interface)

javascript - 如何将过滤器参数传递给中继负载更多

javascript - 如何使用 GraphQL 突变减少请求数?

rest - GitHub API v4 : How can I traverse with pagination?(GraphQL)

javascript - 如何使用 lodash 检查另一个数组中的数组值

json - 如何在 flutter 中解析graphql响应

javascript - 收到错误 : Unknown argument "id" on field "user" of type "Query" [GraphQL, 继电器,React]

graphql - 在批处理之外发送 apollo 请求

javascript - 如何处理中继突变中 Unresolved props?

javascript - 给定一组 GraphQL 变量类型,是否可以使用客户端模式为集合中的每种类型创建所有有效值的映射