Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 July 20

N

Nikita in NodeUA - JavaScript and Node.js in Ukraine
В проектах на TS knex будет головной болью
источник

AL

Andrey Listochkin in NodeUA - JavaScript and Node.js in Ukraine
Я юзаю TypeORM для работы с базой. Он тоже умеет миграции. Генерит файл с 2мя функциями.

К запросам у меня вопросов нет. Если есть связь между сущностями, и ты ее объявил как

projects: Project[] // внутри User

То TypeORM будет генерить left join “project” всегда, когда ты просишь юзера.

А если объявить как

projects: Promise<Project[]>

то проекты по умолчанию догружаться не будут.

И с TypeScript оно работает из коробки
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
orm - зло)
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
мне кажется если там не писать джойнов вообще (средствами ORM) и делать только базовые операции типа insert/update/delete то не такое уж зло
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
Вот именно, но тогда зачем вообще такая orm?)
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
потому что если вы начнете писать проект без ORM то быстро сделаете такую базовую самодельную ORM сами чтобы делать CRUD удобненько
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
я уже видела самописные. начали без ORM но все равно же руки тянутся сделать классы доступа к данным. получается самодельная микро-орм
источник

Т

Техническая поддержк... in NodeUA - JavaScript and Node.js in Ukraine
А на мой дурацкий взгляд, ORM хорошая поляна для велосипедостроения. Этож не криптография...
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
Сколько не пробовал ту же sequelize постоянно какие то костыли, то она по своему хотению  переименовывает таблицы, то с timestamps геморой в плане возможности смены формата, о синтаксисе для подробной выборки вообще молчу, если бы не стак, я бы и не узнал, что интстанс Op, используемый для получения символов для выборки в стиле >=< обязательно должен быть тот же, что использовался при инициализации, куча велосипедов. Ты как бы берешь инструмент и он впринципе то решает твои проблемы и экономит время, но только до оммента, когда тебе не понадобится что-то, что в функционал этой orm не входит и тут ты теряешь вразу больше времени, чем если бы сам свелосипедил простой класс с 4 методами под CRUD
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
просто люди когда используют ORM городят огромные джойны. в коде это выглядит безобидно - пять-шесть строчек кода - подумаешь добавил 2-3 инклуда. а под капотом оно создает огромный SQL запрос еще и не самый эффективный
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
Коротко о том, зачем нужны orm
источник

N

Nikita in NodeUA - JavaScript and Node.js in Ukraine
мой опыт показывает, что 99% претензий к ORM сводиться к тому, что люди не дочитали ее документацию, т.е. не поняли как оно работает под капотом. оставшийся 1% претензий это отсутвие поддержки какой-то специфичной для конкретной БД фичи, решается raw запросами.
источник

MZ

Mike Zhukov in NodeUA - JavaScript and Node.js in Ukraine
Nikita
мой опыт показывает, что 99% претензий к ORM сводиться к тому, что люди не дочитали ее документацию, т.е. не поняли как оно работает под капотом. оставшийся 1% претензий это отсутвие поддержки какой-то специфичной для конкретной БД фичи, решается raw запросами.
Так это немного ламает идею уровней абстракции, разве нет? Если везде залазить под капот и руководствоваться именно инфой оттуда.
источник

N

Nikita in NodeUA - JavaScript and Node.js in Ukraine
Mike Zhukov
Так это немного ламает идею уровней абстракции, разве нет? Если везде залазить под капот и руководствоваться именно инфой оттуда.
1) я не знаю, какая у вас лично идея уровней абстракции, но лично у меня это инструмент для уменьшения когнитивной сложности кода.
2) не выдавайте ваше понимание моих слова за сами. Я не говорил, что нужно залазить по капот. Я сказал, что надо читать документацию. Вот вам цитата`99% претензий к ORM сводиться к тому, что люди не дочитали ее документацию`
Если вы почитаете документацию любой ORM, то найдете там примеры какие запросы будут генерироваться или как их увидеть.
3) И последние, покажите мне работающий проект, где не протекают уровни абстракции. Лично, я такого не видел.
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
Возможно имелся ввиду усложненный интерфейс орм, когда необходимо для банальных вставить/обновить операций лезть и читать толмуты. Мы же не узнаем породу дерева ручки молотка, чтобы забить гвоздь или при какой температуре отлита железная часть, это глупо
источник

MZ

Mike Zhukov in NodeUA - JavaScript and Node.js in Ukraine
Nikita
1) я не знаю, какая у вас лично идея уровней абстракции, но лично у меня это инструмент для уменьшения когнитивной сложности кода.
2) не выдавайте ваше понимание моих слова за сами. Я не говорил, что нужно залазить по капот. Я сказал, что надо читать документацию. Вот вам цитата`99% претензий к ORM сводиться к тому, что люди не дочитали ее документацию`
Если вы почитаете документацию любой ORM, то найдете там примеры какие запросы будут генерироваться или как их увидеть.
3) И последние, покажите мне работающий проект, где не протекают уровни абстракции. Лично, я такого не видел.
2) так в документации все примеры красивые, чтоб понять как делать не надо её недостаточно
источник

ES

Elena Sharovar in NodeUA - JavaScript and Node.js in Ukraine
Ага к примеру эти претензии странные.
>>> по своему хотению  переименовывает таблицы
не верю. только если вы модель переименовали.
>>> то с timestamps геморой в плане возможности смены формата
а в каком таком формате кроме международно признанного ISO 8601 вы собрались даты хранить
источник

АБ

Артур Бердыев... in NodeUA - JavaScript and Node.js in Ukraine
1) автоматическое добавление 's' к имени таблицы, даже если она указана во множественном числе, если только вы не перечитаете всю доку и не найдете. что в параметрах можно поставить свое имя, но трогать его никто уже не будет)
2) Ну вот надо мне к примеру сделать числовой timestumps, ну надо и все, нет, у нас так не принято, мы выплюнем ошибку, потому что в исходниках приколочено, чтобы дата была строкой
Примеры не важны, важно то, что гибкости и простоты использования инструментов, если вы не делаете банальщину, нет
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Elena Sharovar
мне кажется если там не писать джойнов вообще (средствами ORM) и делать только базовые операции типа insert/update/delete то не такое уж зло
тогда не зло, а просто лишняя зависимость, как лефтпад
источник

TS

Timur Shemsedinov in NodeUA - JavaScript and Node.js in Ukraine
Официальная позиция метархии: использовать ORM - не стыдно, используйте, но повторяйте себе каждый день, что это не стыдно
источник