Size: a a a

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

2020 December 28

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
The Fallen Phoenix
Непосредственно между тем, как организовано пространство путей эндпоинта/эндпоинтов, и как происходит обработка, нет взаимосвязи. Более того эти вещи ни в коем случае нельзя завязывать друг на друга.
Я понимаю
Потому это и два отдельных вопроса)
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Ты не понял. База тоже отдельно от логики обработки должна идти.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
А ты как будто бы пытаешься прямо в драйвере базы ее вписать
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
Я пытаюсь понять как мне это вообще отхендлить и организовать)
В базе эти все данные ведь отдельно лежат
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Между некоторыми частями приложения должны быть непересекаемые границы для объектов из этих частей. Понятно что информацию что-то должно таскать между ними, но scope этого механизма ограничен этой самой границей.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Я сейчас рассказываю Clean Architecture
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Это название гуглится
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
Потому я думаю о создании отдельного эндпоинта и контроллера, который будет внутри себя это хендлить. Но я не понимаю как внутри него объединять транзакции и сортировать их без лишних запросов к базе. Пока что из тупого вижу брать 50 ASC из одной таблицы, 50 ASC из второй таблицы, собирать их в массив из 100 элементов, и этот массив уже опять сортировать ASC и обрезать до 50 элементов. Но это явно лишнее + невозможность пагинации
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
Второй вариант что вижу. Всё так же отдельный контроллер, который внутри себя напрямую стучится в две модели и силами sequalize и SQL достает строго 50 элементов ASC
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
Но тогда нарушается принцип единой ответственности – котроллер напрямую стучится в базу, хотя это должен делать слой модели
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Dmytro Svyrydenko
Потому я думаю о создании отдельного эндпоинта и контроллера, который будет внутри себя это хендлить. Но я не понимаю как внутри него объединять транзакции и сортировать их без лишних запросов к базе. Пока что из тупого вижу брать 50 ASC из одной таблицы, 50 ASC из второй таблицы, собирать их в массив из 100 элементов, и этот массив уже опять сортировать ASC и обрезать до 50 элементов. Но это явно лишнее + невозможность пагинации
Смотри. Во первых контроллер это не то, что ты планируешь написать. Контроллер это вполне специфичный компонент, который занимается исключительно делегированим исполнения ASAP.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Тебе нужно организовать эту логику в виде модуля, который ничего не знает ни о вебе, ни о базе.
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Зато получает в качестве Dependency нечто, где он может попросить скажем определенную транзацию
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Ну то есть все что ему нужно для вычислений
источник

V

Vlad in Node.js — русскоговорящее сообщество
Dmytro Svyrydenko
Но тогда нарушается принцип единой ответственности – котроллер напрямую стучится в базу, хотя это должен делать слой модели
обычно между моделью и контроллером есть сервис, в котором все это и хендлится
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Там ты потом сделаешь кеширование в рамках запроса, чтобы каждая сущность, что нужна при конкретном подсчёте, тянулась не более раза
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
Vlad
обычно между моделью и контроллером есть сервис, в котором все это и хендлится
Ну в sequelize это ведь методы самой модели. Разве нет?
Типо этого
источник

DS

Dmytro Svyrydenko in Node.js — русскоговорящее сообщество
The Fallen Phoenix
Зато получает в качестве Dependency нечто, где он может попросить скажем определенную транзацию
Можно ли где-то пример подсмотреть?
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Dmytro Svyrydenko
Можно ли где-то пример подсмотреть?
На не очень современном диалекте могу скинуть пример. В виде видео с Ютуба
источник

T

The Fallen Phoenix in Node.js — русскоговорящее сообщество
Сам поправишь до нужного уровня, лады?
источник