Size: a a a

NodeUA - JavaScript and Node.js in Ukraine

2020 March 22

DD

Dmytro Drachov in NodeUA - JavaScript and Node.js in Ukraine
Походу не)
источник

@

@andrii in NodeUA - JavaScript and Node.js in Ukraine
как по мне чистиые запросы понятнее)
источник

ЕХ

Егор Хильченко... in NodeUA - JavaScript and Node.js in Ukraine
Алексей Карташов
Я против такого подхода, поэтому такой вариант не рассматриваю в приниципе) но да - какие-то пакеты для подобных вещей в его экосистеме есть
+, потом поменяй фреймворк и ощутишь всю связку верхнего слоя приложения с нижним, чего впринципе быть не должно
источник

@

@andrii in NodeUA - JavaScript and Node.js in Ukraine
ну и быстрее пишуться)
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
@andrii
как по мне чистиые запросы понятнее)
Якщо їх правильно писати, то при цьому вони ще й безпечні, виконуються ефективно і при змінах на стороні бази даних просто так не буде можливості "віддати" зайві дані.
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
@andrii
как по мне чистиые запросы понятнее)
Это до тех пор, пока запросы вида select * from users where id = :id. Когда в базе десятки таблиц с десятками же связей, то без внятной orm свихнуться можно)
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
Алексей Карташов
Это до тех пор, пока запросы вида select * from users where id = :id. Когда в базе десятки таблиц с десятками же связей, то без внятной orm свихнуться можно)
Ну от ця сама * це "смертний гріх" в sql.
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
А відносно проблеми зв'язаності таблиць - при адекватній нормальнізації і знанні sql такі запити теж не становлять проблем. При цьому, якщо використовувати для побудови таких складних запитів ORM, то мені страшно уявити різницю в швидкості виконання запитів.
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
Кай
А відносно проблеми зв'язаності таблиць - при адекватній нормальнізації і знанні sql такі запити теж не становлять проблем. При цьому, якщо використовувати для побудови таких складних запитів ORM, то мені страшно уявити різницю в швидкості виконання запитів.
Objection тем и хорош, что построен поверх knex-а - в любой момент узкие места можно переписать на query builder'е не отходя от "кассы" и доменной модели
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
Ну и рефакторинг - с чистыми sql-запросами любое переименование/удаление столбцов/таблиц в бд - это боль при сколь-нибудь большой кодовой базе
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
Алексей Карташов
Ну и рефакторинг - с чистыми sql-запросами любое переименование/удаление столбцов/таблиц в бд - это боль при сколь-нибудь большой кодовой базе
Ніхто не говорить про те, що sql запити мають бути повністю захардкодженими. У всьому іншому при перейменуванні чи видаленні стовбця в бд розробник має про це дізнатись, щоб внести зміни і при чому зробити це свідомо.
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
Кай
Ніхто не говорить про те, що sql запити мають бути повністю захардкодженими. У всьому іншому при перейменуванні чи видаленні стовбця в бд розробник має про це дізнатись, щоб внести зміни і при чому зробити це свідомо.
И в скольких местах это нужно сделать? Всё ли будет найдено и изменено? Ненавижу поиск по строкам при рефакторинге в проекте. В случае с orm при переименовании таблицы - я просто меняю её название в модели. Со столбцами сложнее - те же строки, но любой запрос надо заворачивать в метод модели. Т.о. поиск мест для рефакторинга будет сильно сужен
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
Алексей Карташов
И в скольких местах это нужно сделать? Всё ли будет найдено и изменено? Ненавижу поиск по строкам при рефакторинге в проекте. В случае с orm при переименовании таблицы - я просто меняю её название в модели. Со столбцами сложнее - те же строки, но любой запрос надо заворачивать в метод модели. Т.о. поиск мест для рефакторинга будет сильно сужен
Завжди можна зберігати назву таблиці, як приватне readpnly поле всередині класу чи файлу, де знаходяться запити. Стовбці можна передавати, як масив string значень, або ж якщо для всіх запитів стовбці однакові - теж, як приватне поле класу чи ще якось.
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
Дак если речь про то, что мы используем классы с пропертями в виде названий таблиц, списка столбцов, изолированности запросов от остальных слоёв, то почему бы сразу не перейти на orm?) Суть - та же, плюшек - больше)
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
Я намагаюсь пояснити, що при будь-яких змінах програміст має бути сповіщений про це так само, як би це була помилка. При використанні ORM така можливість не завжди є.
Бо інакше це все буде працювати, як catch (error) {} і розробник буде думати, що "все чудовенько", аж поки клієнт йому не повідомить про  мутацію даних чи ще щось.
(це вже напевне крайнощі, та все ж)
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
Если подходить с умом, то и орм не нужна, да. Я же говорю про ситуацию, когда разработчик спрашивает - "а работает ли орм с экспрессом?" Вот при таком подходе ни о каком сознательном и профессиональном подходе говорить не приходится, кмк. Поэтому лучше взять орм, почитать доку, описать связи, положить модельки в отдельную папочку и вот уже есть какое-то подобие разделения слоёв, типизация и множество готовых методов и подходов для работы с бд, описанных прямо в документации. Такой код при прочих равных и читать будет проще, и поддерживать. А уж objection это будет, или typeorm - вопрос второй)
источник

a

azim in NodeUA - JavaScript and Node.js in Ukraine
так а паттерн Репозиторий не разделаят на слои? можно же в нем либо использовать сиквели либо орм.
источник

К

Кай in NodeUA - JavaScript and Node.js in Ukraine
Кай
Кстати, у Тимура было видео и там об этом говорилось, сейчас поищу.
По поводу ORM с таймкодом:
https://youtu.be/DJCzZF383ug?t=2760
На мою думку в відео присутні пояснення, що можуть змінити думку відносно використання ORM.
источник

a

azim in NodeUA - JavaScript and Node.js in Ukraine
обычно орм используют не всю мощь бд. и у них есть свои баги. придется изучать кроме сиквела еще саму орм.
возможно если хорошо знаешь сиквел и проект не будет менять бд, есть смысл испльзовать чисто сиквел
источник

АК

Алексей Карташов... in NodeUA - JavaScript and Node.js in Ukraine
azim
обычно орм используют не всю мощь бд. и у них есть свои баги. придется изучать кроме сиквела еще саму орм.
возможно если хорошо знаешь сиквел и проект не будет менять бд, есть смысл испльзовать чисто сиквел
*сейчас будет чистая субъективщина*

sequelize - говно)

*пруфов не будет*
источник