GraphQL: как избежать перезаписи значений для неуказанных полей при обновлении через мутацию
Позволь мне объяснить:
Я использую Gson в качестве десериализатора, MongoDB в качестве хранилища и новый Spring GraphQL.
Допустим, у меня есть объект O в базе данных с полями:
A = 6
B = null
Если внешний интерфейс отправляет обновление в поле B, поэтому я получаю JSON только с полем B с его значением, поэтому я получаю O с:
B = 1
Затем после десериализации в Java мой объект O будет иметь следующие поля:
Затем в MongoDB он сохранит:
A = null
B = 1
Таким образом, значение A будет перезаписано нулем, а мы этого не хотим, интерфейс хочет только обновить поле B.
Как вы решаете это изящно?
1 ответ
Сейчас в Spring GraphQL нет поддержки «исправляемых сущностей». В то время как
null
по сравнению с «пустыми» значениями для поля доступны непосредственно в карте JSON, привязка этого к объекту Java и привязка его к истории репозитория данных является более сложной задачей.
Это обсуждается в этом выпуске Spring GraphQL .