Scala и Mongodb разные модели версии - PullRequest
0 голосов
/ 28 ноября 2018

Я думал об интересном сценарии и пытался найти лучшее и элегантное решение, чтобы избежать будущей проблемы. Я более чем уверен, что у кого-то есть отличная идея, чтобы это исправить.

Это.is сценарий:

В рамках Scala Play (на самом деле это действительно для любого языка) У меня есть простой пользователь класса, представляющий мою фактическую модель пользователя:

Case class user(name:String, age:Int){}

Теперь у меня естьмой неявный конвертер JSON, и я могу сохранить много пользователей в базе данных MongoDB (или любой другой базе данных).

Через некоторое время я решаю добавить новое свойство в свой класс пользователя, скажем:

Case class user(name:String, age:Int, surname:String){}

Теперь мое приложение обновлено, и если я его запусту, все будет работать нормально, пока я не попытаюсь загрузить старого пользователя, сохраненного со старой моделью.

В этом случае у меня, конечно,исключение, потому что данные из базы данных недействительны (на самом деле свойство фамилии отсутствует) и объект не может быть создан.

Мой вопрос: как лучше всего справиться с этим, особенно используя scala и нереляционную базу данных как MongoDB?

Спасибо всем.

ОБНОВЛЕНИЕ

предложение об использовании Option [String] является лучшим решением

1 Ответ

0 голосов
/ 28 ноября 2018

Вы можете добавить новое поле как Option [String].Так что это будет None, если оно отсутствует (для старых данных).и это будет Some (значение) (для новых данных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...