Watch a live product demo 👀 See how Sanity powers richer commerce experiences

How do I make a patch request to a document to change its type? This is resulting in an error Cannot modify immutable attribut

11 replies
Last updated: Sep 11, 2020
How do I make a patch request to a document to change its type? This is resulting in an error
Cannot modify immutable attribute \\"_type\\""

{
  "mutations": [
    {
      "patch": {
        "id": "drafts.<document id>",
        "ifRevisionID": "<revision id>",
        "set": {
          "_type": "slidingBanner"
        },
        "unset": [
          "height"
        ]
      }
    }
  ]
}

Sep 10, 2020, 7:54 PM
Note that in this case, this is a top level document which is referenced all over the place. I also am attempting to do this modification to nested objects embedded in other documents.
Sep 10, 2020, 7:55 PM
I am doing a data migration, so this restriction is quite annoying. I can understand that
_type
should not be able to have any other operation other than
set
applied to it, but also preventing
set
? Why?
Sep 10, 2020, 7:56 PM
Note that one of the reasons I want to change the
_type
is because the content sidebar is sorted by the type field, not the title of the schema types, so leaving it alone gives me a giant headache having to explain why it's mostly sorted, but not really.
Sep 10, 2020, 8:01 PM
can't help with the patch issue, but could you create a custom desk structure and sort them yourself?
Sep 10, 2020, 9:02 PM
Something like
S.documentTypeListItems().sort( /* sort by title */ )
Sep 10, 2020, 9:02 PM
Haven't tried to do that for the content sorting, but that seems incredibly silly to need to recreate a component because the default sort is on a visually hidden field instead of the visually prominent title.
I'll have to throw that on my checklist of things to do anyway, since there are some document types I've created that are purely administrative, so I want to implement grouping of document types.

Alas, WYSIWYG editing is higher on my priority list for the higher complexity schemas though.
Sep 10, 2020, 9:06 PM
export default () =>
  S.list()
    .title('Content')
    .items(
      S.documentTypeListItems().sort((a, b) =>
        a.spec.title.localeCompare(b.spec.title),
      ),
    );
Sep 10, 2020, 9:06 PM
hah, well best of luck with it either way!
Sep 10, 2020, 9:07 PM
Thanks for the tip though, saved that for later when I inevitably start bashing my head against my keyboard trying to remember why I know I dont know how to do that.
Sep 10, 2020, 9:11 PM
Hi, this is tricky one since _type is immutable you have to do a full on migration to rename it. Here's a snippet that should help you on the way https://www.github.com/sanity-io/sanity-recipes/tree/master/snippets%2FmigrateDocumentType.js
Sep 11, 2020, 6:07 AM
Ugh. That script doesn't look like it'd handle a deeply nested reference in there. Yeah, gonna pass on renaming the type for now.
Sep 11, 2020, 5:29 PM

Sanity– build remarkable experiences at scale

The Sanity Composable Content Cloud is the modern headless CMS that treats content as data to power your digital business. Free to get started, and pay-as-you-go on all plans.

Related answers

Get more help in the community Slack

TopicCategoriesFeaturedRepliesLast Updated
After adding the subtitle and running this code npm run graphql-deploy It does nothingSep 15, 2020
how to limit a reference to just one entry in Studio reference input side versus the default as-many-entries-as-you-fill-in-an-array...Sep 18, 2020
Is it possible to fetch more than one "_type" using GROQ?Nov 2, 2020
I want to add a view with the Structure builder (S.view.component) where I list similar documents based on the title. What...Sep 23, 2020
Is there a structure builder example where the format of each preview for the document list is modified?Feb 3, 2021
I have an array of references to a country schema type but it always just returns NULL values for meJan 30, 2021
Hi, I need help with a query for getting the url of an image asset. Here is what I've been trying, but I only get the _ref...Dec 1, 2020
Sanity UI looks brilliant :smiley: Is something like the current date picker possible at the moment? I’m not sure if anicon...Dec 21, 2020
Hey everyone. I have been coding and may have potentially accidentally deleted something. Does anyone know how to resolve...Dec 26, 2020
Hello everyone and happy new year :raised_hands::skin-tone-2:, I have a problem with outputting Portable Text :disappointed:...Jan 1, 2021

Related contributions

Clean Next.js + Sanity app
- Template

Official(made by Sanity team)

A clean example of Next.js with embedded Sanity ready for recomposition.

Cody Olsen
Go to Clean Next.js + Sanity app

Blog with Built-in Content Editing
- Template

Official(made by Sanity team)

A Sanity-powered blog with built-in content editing and instant previews.

Go to Blog with Built-in Content Editing