В рамках конвейера ETL я конвертирую данные JSON в модель вложенных классов. Модели предоставляют методы, соответствующие свойствам, которые я в конечном итоге хочу преобразовать в JSON и записать в индекс Elasticsearch. Сериализация классов в JSON занимает очень много времени, и мне интересно, существует ли очевидный способ оптимизировать этот процесс.
Это упрощенная схема взаимодействия моделей:
class ParentModel {
children () {
this.rawChildren.map(child => new ChildModel(rawChild))
}
property1(){
// some logic to build out the property
}
property2(){
// some logic to build out the property
}
}
И дочерняя, и родительская модели наследуются от базовой модели с помощью следующего метода преобразования моделей в JSON для отправки в эластичный поиск:
modelToJson () {
// Apply to-json to this object:
const plainObject = baseToJSON(this)
// Recursively apply to-json to any child entity that implements toJson:
Object.entries(plainObject).forEach(([key, value]) => {
// Handle case where ES model method returns a single ES model:
if (value && value.toJson) {
plainObject[key] = value.toJson()
// Handle case where ES model method returns an array of ES models:
} else if (Array.isArray(value) && value.some((v) => v && v.toJson)) {
plainObject[key] = value.map((subModel) => subModel && subModel.toJson())
}
})
return plainObject
}
const baseToJSON = (model) => {
const methods = _publicMethods(model)
const objectToJson = {}
methods.forEach((method) => {
// Initialize the property first so that the resulting object keys are
// created in the same alpha-sorted order they're found, even if some of
// the values are returned async:
objectToJson[method] = null
// Call the model method, awaiting if async:
objectToJson[method] = model[method]()
// If method returns null, don't include property:
if (objectToJson[method] === null) delete objectToJson[method]
})
return objectToJson
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ain-object
Как оптимизировать запись всех методов класса в простой объект? ⇐ Javascript
Форум по Javascript
-
Anonymous
1760046159
Anonymous
В рамках конвейера ETL я конвертирую данные JSON в модель вложенных классов. Модели предоставляют методы, соответствующие свойствам, которые я в конечном итоге хочу преобразовать в JSON и записать в индекс Elasticsearch. Сериализация классов в JSON занимает очень много времени, и мне интересно, существует ли очевидный способ оптимизировать этот процесс.
Это упрощенная схема взаимодействия моделей:
class ParentModel {
children () {
this.rawChildren.map(child => new ChildModel(rawChild))
}
property1(){
// some logic to build out the property
}
property2(){
// some logic to build out the property
}
}
И дочерняя, и родительская модели наследуются от базовой модели с помощью следующего метода преобразования моделей в JSON для отправки в эластичный поиск:
modelToJson () {
// Apply to-json to this object:
const plainObject = baseToJSON(this)
// Recursively apply to-json to any child entity that implements toJson:
Object.entries(plainObject).forEach(([key, value]) => {
// Handle case where ES model method returns a single ES model:
if (value && value.toJson) {
plainObject[key] = value.toJson()
// Handle case where ES model method returns an array of ES models:
} else if (Array.isArray(value) && value.some((v) => v && v.toJson)) {
plainObject[key] = value.map((subModel) => subModel && subModel.toJson())
}
})
return plainObject
}
const baseToJSON = (model) => {
const methods = _publicMethods(model)
const objectToJson = {}
methods.forEach((method) => {
// Initialize the property first so that the resulting object keys are
// created in the same alpha-sorted order they're found, even if some of
// the values are returned async:
objectToJson[method] = null
// Call the model method, awaiting if async:
objectToJson[method] = model[method]()
// If method returns null, don't include property:
if (objectToJson[method] === null) delete objectToJson[method]
})
return objectToJson
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79786869/how-to-optimize-writing-all-of-an-classs-methods-to-a-plain-object[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия