Я работаю с конкретным объектом JSON в javascript, который содержит несколько нефиксированных свойств (я имею в виду свойства, которые могут измениться в будущем).
Я работал над чем-то вроде:
{
"propertyA": {
"value": "0",
"type": "A"
},
"propertyB": {
"childs": {
"propertyC": {
"prop": "value",
"anotherProp": "randomValue"
}
},
"type": "B"
}
}
Как видите, не все свойства одинаковы и не следуют шаблону.Это потому, что я использую его для хранения некоторых конфигов.Проблема в том, что если я хочу что-то изменить в будущем, скажем, что "propertyA"
меняется на "propertyA": { "config": "0", type: "A" }
, я не могу изменить javascript, который читает эти свойства, чтобы читать новые и забыть старые, потому что если я получустарый конфиг и попытайтесь получить доступ к свойствам, идентифицированным по имени последней версии конфига, это сломает приложение.
Я думал о чем-то вроде: проверить свойства JSON> проверить "версию" JSON> обновить соответственно> сохранить обновления> читать свойства JSON, измененные в новом формате
До сих пор я пытался добавить поле "version": "1.0"
в мой JSON, а затем создать средство обновления для проверки всех версий.Если взять приведенный пример, если последняя версия JSON - 1.2, то обновляет "propertyA"
до версии 1.1 и 1.2 после этого.
Но с этим я сталкиваюсь с двумя проблемами:
- Если я скачаю очень старый JSON (сохраненный 1.0 / последний 5.2), вероятно, потребуется слишком много времени, чтобы обновить его, если будет проходить все версии, пока он не достигнет версии 5.2.
- Пользователь может иметь доступ кбаза данных.Это означает, что он может изменить версию JSON вручную.Я знаю, что это в некотором роде невозможно, и это может привести к поломке приложения, но я хочу сохранить его как можно более безопасным.
По сути, я хочу знать, как обновляться между версиями моего JSONбыстро конфигурируется, независимо от того, сколько разных версий находится между полученным конфигом и последней (например, накопительным апдейтером или чем-то в этом роде, который обновляется до последней версии независимо от того, какая версия является старой), и без сохранения версии втот же JSON или в БД, если это возможно (например, определение версии в зависимости от того, какие атрибуты у нее есть).
PS: я использую Typescript, если это помогает найти более простое решение.