We're moving the community! Starting July 7, the current community will be read-only for approx. 2 weeks. You can browse content, but posting will be temporarily unavailable. Learn more

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,
        }
      }
    }
  }