#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, и я считаю, что это то, что следует улучшить. Не могли бы вы открыть проблему в репозитории сервера синтаксического анализа?