22

AWS AppSync Docs のこのドキュメント/チュートリアルに従います

それは述べています:

AWS AppSync を使用すると、これらを GraphQL タイプとしてモデル化できます。いずれかのミューテーションに、bucket、key、region、mimeType、および localUri フィールドを持つ変数がある場合、SDK はファイルを Amazon S3 にアップロードします。

ただし、ファイルを s3 バケットにアップロードすることはできません。チュートリアルには多くの詳細が欠けていることを理解しています。NewPostMutation.jsより具体的には、チュートリアルでは、を変更する必要があるとは述べていません。

次のように変更しました。

import gql from 'graphql-tag';

export default gql`
mutation AddPostMutation($author: String!, $title: String!, $url: String!, $content: String!, $file: S3ObjectInput ) {
    addPost(
        author: $author
        title: $title
        url: $url
        content: $content
        file: $file
    ){
        __typename
        id
        author
        title
        url
        content
        version
    }
}
`

しかし、これらの変更を実装した後でも、ファイルはアップロードされませんでした...

4

2 に答える 2

2

議論に追加するだけです。モバイルクライアントの場合、増幅 (または aws コンソールから行う場合) は、ミューテーション呼び出しをオブジェクトにカプセル化します。カプセル化が存在する場合、クライアントは自動アップロードしません。そのため、aws コンソールでミューテーション コールを直接変更して、アップロードファイル : S3ObjectInputが呼び出しパラメータにあるようにすることができます。これは、ドキュメントに従って最後にテストしたとき (2018 年 12 月) に発生していました。

この呼び出し構造に変更します。

 type Mutation {
        createRoom(
        id: ID!,
        name: String!,
        file: S3ObjectInput,
        roomTourId: ID
    ): Room
}

次のような自動生成された呼び出しの代わりに:

type Mutation {
    createRoom(input: CreateRoomInput!): Room
}
input CreateRoomInput {
    id: ID
    name: String!
    file: S3ObjectInput
}

この変更を行うと、@hatboyzero が概説したことを行うと、iOS と Android の両方が喜んでコンテンツをアップロードします。

[編集] 少し調査しましたが、おそらくこれは 2.7.3 https://github.com/awslabs/aws-mobile-appsync-sdk-android/issues/11で修正されています。彼らはおそらくiOSに対処しましたが、私はチェックしませんでした.

于 2019-02-04T23:08:14.387 に答える