Size: a a a

Node.js — русскоговорящее сообщество

2021 March 06

PW

Pan Włodzimierz in Node.js — русскоговорящее сообщество
внатуре дичь
тт 14 пишет
там 28
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
У меня подход к этому такой:
1. Получаю ответ от сервера
2. Проверяю наличие необходимых свойств
3. Из этих свойств составляю свой объект
4. Продолжаю пользоваться этим объектом внутри своего приложения
источник

AC

Andy Cox in Node.js — русскоговорящее сообщество
Artyom Burkan
Я не ищу решение)) Я ищу реализацию
что-то типо const findObject = (obj) => {
Object.keys(obj).forEach((key) => {
 if (typeof obj[key] === 'object' && obj[key] !== null) {
  //some logic here to find searchable object
  //if not found
  findObject(obj[key])
 }
})
}
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Artyom Burkan
Ну, а как иначе выстраиваете структуру? Бэк же не всегда может присылать простые объекты.
Проблема не в том, что структура сложная
А в том, что она неизвестна и свойство с нужным именем надо искать... На бэкенде генератор случайных структур сидит или как такое получается вообще? Была бы структура известна — взяли бы lodash _.get и не надо было бы тратить ни строки кода, ни производительность фронта на поиск свойств.
источник

-

- in Node.js — русскоговорящее сообщество
Телеграм хуйня, я вижу всех
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Unknown T.
Проблема не в том, что структура сложная
А в том, что она неизвестна и свойство с нужным именем надо искать... На бэкенде генератор случайных структур сидит или как такое получается вообще? Была бы структура известна — взяли бы lodash _.get и не надо было бы тратить ни строки кода, ни производительность фронта на поиск свойств.
Структура ответа на самом деле всегда известна и полностью описана в спеке. Когда объект в ответе начинает находиться глубоко, то появляется необходимость описания всей вложенности для его извлечения. Вот описания всей вложенности мне хотелось бы избавиться и получать сразу нужный объект по названному свойству в глубокой вложенности
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Насколько же невероятной должна быть вложенность, чтобы делать _.get было нецелесообразно. В конце концов можно сохранять «селекторы» вида a.b.c.d.e куда-то и потом их просто использовать
источник

VK

Vladimir Kurchatkin in Node.js — русскоговорящее сообщество
Artyom Burkan
Структура ответа на самом деле всегда известна и полностью описана в спеке. Когда объект в ответе начинает находиться глубоко, то появляется необходимость описания всей вложенности для его извлечения. Вот описания всей вложенности мне хотелось бы избавиться и получать сразу нужный объект по названному свойству в глубокой вложенности
foo.bar.baz сложно написать?
источник

СП

Сергей Пограничный... in Node.js — русскоговорящее сообщество
Вы однозначно херню лепите, посмотрите как объект работает в кишках, если у вас глубина пропсов на 5 вложенностей это уже worst practice, вот че
источник

AC

Andy Cox in Node.js — русскоговорящее сообщество
Artyom Burkan
Структура ответа на самом деле всегда известна и полностью описана в спеке. Когда объект в ответе начинает находиться глубоко, то появляется необходимость описания всей вложенности для его извлечения. Вот описания всей вложенности мне хотелось бы избавиться и получать сразу нужный объект по названному свойству в глубокой вложенности
если не хотите рекурсивную функцию или пакеты, то можно парсер написать под []{} ☺️
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Vladimir Kurchatkin
foo.bar.baz сложно написать?
Пример:


// приходит объект такого типа
interface ErrorBody {
  errorName: string
  errorCode: string
  errorDescription: string
}

interface ErrorDate {
 errorDate: ErrorBody
}

// далее хочу премапить в объект своего типа
interface CustomError {
 name: string
 code: string
 description: string
}

// допустим я нашёл errorDate в объекте {n: errorDate }
// как мне его к себе перемапить на свой тип? А если я хочу обновить CustomError дополнительными свойствами?
источник

UT

Unknown T. in Node.js — русскоговорящее сообщество
Действительно, можно плагин под Babel сделать, и будете писать типа obj..deepProp
И транспайлить это в вызов функции для глубокого поиска свойства. Ведь это же гораздо проще, чем обратиться к свойству напрямую ))
источник

VK

Vladimir Kurchatkin in Node.js — русскоговорящее сообщество
Artyom Burkan
Пример:


// приходит объект такого типа
interface ErrorBody {
  errorName: string
  errorCode: string
  errorDescription: string
}

interface ErrorDate {
 errorDate: ErrorBody
}

// далее хочу премапить в объект своего типа
interface CustomError {
 name: string
 code: string
 description: string
}

// допустим я нашёл errorDate в объекте {n: errorDate }
// как мне его к себе перемапить на свой тип? А если я хочу обновить CustomError дополнительными свойствами?
Ручками
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Vladimir Kurchatkin
Ручками
Это как обходить цикл руками))
источник

VK

Vladimir Kurchatkin in Node.js — русскоговорящее сообщество
Где здесь цикл? У тебя есть {n: errorDate }
источник

VK

Vladimir Kurchatkin in Node.js — русскоговорящее сообщество
Ну и перемапь
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Vladimir Kurchatkin
Где здесь цикл? У тебя есть {n: errorDate }
N какая-то вложенность
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Может быть n-2 или n+3
источник

VK

Vladimir Kurchatkin in Node.js — русскоговорящее сообщество
Окей, вытащи его foo.bar.baz и потом перемапь
источник

AB

Artyom Burkan in Node.js — русскоговорящее сообщество
Vladimir Kurchatkin
Окей, вытащи его foo.bar.baz и потом перемапь
200 API === 200 раз ручками найти и 200 раз перемапить
источник