Создайте объект обновления JSON - PullRequest
0 голосов
/ 07 февраля 2019

Я работаю с конкретным объектом 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 после этого.

Но с этим я сталкиваюсь с двумя проблемами:

  1. Если я скачаю очень старый JSON (сохраненный 1.0 / последний 5.2), вероятно, потребуется слишком много времени, чтобы обновить его, если будет проходить все версии, пока он не достигнет версии 5.2.
  2. Пользователь может иметь доступ кбаза данных.Это означает, что он может изменить версию JSON вручную.Я знаю, что это в некотором роде невозможно, и это может привести к поломке приложения, но я хочу сохранить его как можно более безопасным.

По сути, я хочу знать, как обновляться между версиями моего JSONбыстро конфигурируется, независимо от того, сколько разных версий находится между полученным конфигом и последней (например, накопительным апдейтером или чем-то в этом роде, который обновляется до последней версии независимо от того, какая версия является старой), и без сохранения версии втот же JSON или в БД, если это возможно (например, определение версии в зависимости от того, какие атрибуты у нее есть).

PS: я использую Typescript, если это помогает найти более простое решение.

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