Как удалить указатель на объект при синтаксическом анализе с помощью GraphQL?

#parse-platform #parse-server

Вопрос:

У меня есть класс с именем Product , и в нем есть поле с именем owner , которое является указателем на названный класс Customer . Я использую GraphQL с сервером синтаксического анализа в качестве серверной части, и я могу создавать объекты просто отлично, как это:

 export const CREATE_PRODUCT = gql`
  mutation CreateProduct($fields: CreateProductFieldsInput) {
    createProduct(input: { fields: $fields }) {
      clientMutationId
      product {
        owner {
          id
          name
        }
        id
        mfg_date
        model
        serial
      }
    }
  }
`;

const [mutate, { data, error, loading }] = useMutation(CREATE_PRODUCT);
const createProduct = useCallback(
  (value: ProductOutput) => {
    const variables = {
      fields: {
        ACL: value.ACL,
        owner: { link: value.owner },
        mfg_date: value.mfg_date,
        model: value.model,
        serial: value.serial,
      }
    };
    return mutate({ variables });
  },
  [mutate]
);
 

И это работает просто отлично, продукт создается и ассоциируется с владельцем. Я сталкиваюсь со случаем, когда мне нужно сохранить продукт, но удалить владельца, и, что бы я ни пытался, owner поле никогда не удаляется. Вот что я попробовал:

 export const UPDATE_PRODUCT = gql`
  mutation UpdateProduct($id: ID!, $fields: UpdateProductFieldsInput) {
    updateProduct(input: { id: $id, fields: $fields }) {
      clientMutationId
      product {
        owner {
          id
          name
        }
        id
        mfg_date
        model
        serial
      }
    }
  }
`;

const [mutate, { data, error, loading }] = useMutation(UPDATE_PRODUCT);

const updateProduct = useCallback(
  (value: ProductOutput) => {
    return mutate({
      variables: {
        id: value.id,
        fields: {
          ACL: value.ACL,
          ...(value.owner
            ? { owner: { link: value.owner } }
            : { owner: { link: null } }),
          mfg_date: value.mfg_date,
          model: value.model,
          serial: value.serial,
        }
      }
    });
  },
  [mutate]
);
 

Если я установлю owner null значение, то серверная часть будет жаловаться на ожидание объекта, но вместо этого получит значение null. Независимо от того, что я отправляю в качестве owner поля, указатель никогда не удаляется. Глядя на REST API, есть определенная операция «удаления», и мне интересно, должна ли она быть и для GraphQL. Я не могу найти никакой документации о том, как это сделать. Если у кого-нибудь есть какие-либо советы, я был бы очень признателен.

Комментарии:

1. К сожалению, в настоящее время нет способа отменить настройку поля с помощью API GraphQL, и я считаю, что это то, что следует улучшить. Не могли бы вы открыть проблему в репозитории сервера синтаксического анализа?