У меня есть устаревшая база данных, которую я хочу выставить на новый новый API.Использование TypScript для сопоставления схем базы данных
Мне нужно отобразить имена полей моделей из старого db в мои новые классы моделей.
Я хочу сделать это безопасным способом, вместо использования только словаря сопоставлений строк, которые подвержены ошибкам.
// The new model.
class Patient {
firstName: string
lastName: string
dateOfBirth: Date
}
var p: Patient;
legacyToNewModelMappings =
"First Name": p.firstName
"Family Name": p.familyName
"DOB": p.dateOfBirth
Это хорошо, потому что если я изменить поле в своей новой модели, рефакторинг будет легко и я буду получать предупреждение в моем IDE, если есть проблема.
Однако мне нужно иметь возможность сопоставлять между двумя моделями. Использование ссылок, хотя это означает, что я не могу сопоставить устаревшую БД с новой БД.
Я использую TypeScript в Node.js.
Любые другие подходы, на которые я должен смотреть?
Вы имеете в виду возвращение от новой БД к устаревшей БД? Это проблема JavaScript, не имеющая отношения к TypeScript. Ваше сопоставление должно быть двухсторонним, но хэши объектов JavaScript являются только односторонними. Таким образом, вам нужно либо построить два картографических словаря в двух направлениях, либо использовать поиск свойств по одному из направлений (возможно, наименее используемый). Некоторые библиотеки JavaScript содержат функцию «обратного объекта», которая создает новый объект, переключая ключи свойств со значениями - в этом случае вы создаете одно сопоставление, а затем «реверсируете» его, чтобы получить другое направление. –
Кроме того, ваши legacyToNewModelMappings не работают. Это создаст ваше сопоставление со значениями, которые являются текущими значениями свойств при создании объекта сопоставления. Обычно вы создаете две функции: setLegacyToNewModel() и getLegacyFromNewModel(), которые содержат инструкции switch в имени свойства, если вы не хотите использовать индексацию имени свойства в классе TypeScript. –