Why isn't GraphQL fileCreate mutation returning image URL?

Why isn't GraphQL fileCreate mutation returning image URL?

Vinnydude
Shopify Partner
21 1 5

I'm in the process of creating an importer for an old site and part of what I need to import includes some wysiwyg areas which include images.

I am as far as using the mutation fileCreate to upload the file, this is all working.

However, I can't seem to get back the new url that I need to replace in my content!

image is just returning null.

Any ideas what I'm doing wrong here?

mutation fileCreate($files: [FileCreateInput!]!) {
                      fileCreate(files: $files) {
                        files {
                          ... on MediaImage {
                            id
                            image {
                              transformedSrc
                            }
                          }
                        }
                      }
                    }
Replies 5 (5)

Vinnydude
Shopify Partner
21 1 5

I've cracked it!

Rather than relying on the fileCreate to pass me anything meaningful back, I already have the filename of the file I'm creating.

So if I run a second graphQL and query the filename, I can get the file and url!!!

{
                        files(query: "filename:'.$filename.'", first: 1) {
                            edges {
                                node {
                                    createdAt
                                    ... on MediaImage {
                                        id
                                        image {
                                            transformedSrc
                                        }
                                    }
                                }
                            }
                        }
                    }
mariannef
Visitor
2 0 4

Thanks for posting this solution!

If anyone's passing through here wondering how to pass that $filename as a variable since the query expects a string, here's a useful thread

AnonyScott
Shopify Partner
5 1 8

Simpler solution that might not of been available when the original was posts is to take the id returned by fileCreate then query for the node directly

 

https://shopify.dev/api/admin-graphql/2021-10/queries/node

Vinnydude
Shopify Partner
21 1 5

That sounds like a far more reliable method. I'll definitely keep that in mind if I need to right another importer. Thank you!

porobertdev
Shopify Partner
1 0 0

For anyone who also has a client and is in a rush, just use this query and replace node's `id` with `gid` you got from `fileCreate`'s response (`data.fileCreate.files[0].id`).

query {
    node(id: "gid://shopify/MediaImage/54823383826760") {
      id,
    	... on MediaImage {
        id,
        image {
          altText,
          id,
          originalSrc,
          transformedSrc,
          width,
          height,
        }
      }
    }
  }