209 похожих чатов

20 ответов

21 просмотр

Я хотел бы использовать EntityManager для таблицы у которой есть связь с другими таблицами, а для того чтобы его использовать нужно создать DataSource. Мне не нравится стандартный подход TypeORM, который описан в документации для того чтобы сохранить запись, у которой есть связи с другими таблицами: 1) Необходимо сначала сходить в базу и получить объекты, которые связаны с новой записью в бд (сколько связей столько раз нужно и в базу ходить, прежде чем сделать сохранение) При этом надо тянуть ещё дополнительные Repositories в order.service.ts, чтобы получить эти объекты и это всё нарушается принцип SRP 2) Необходимо связать эти объекты между собой 3) И уже потом сохранить По этому я бы хотел использовать EntityManager, чтобы я смог при помощи SQL или QueryBuilder создать новую сущность при этом чтобы у неё были связи с существующими записями из других таблиц и не нарушать принципы проектирования (или хотя бы уменьшить количество зависимостей)

Виктор-Пятаков Автор вопроса
Äртем
Я хотел бы использовать EntityManager для таблицы ...

Как-то все сложно звучит. В нест хорошо прописана чистая архитектура. Поэтому например работа с репазиторием конкретной сущности хорошо ложится в этот контекст. Сам репазиторий, это более высокая надстройка над датасоурс, он внутри себя автоматом подтянет все зависимости перечисленных энтити в коде указанном выше. Ну или если заморачиваться, тогда стоит посмотреть в сторону провайдеров неста и описать нужный синглтон в useFactory. Если я правильно понял запрос

Виктор Пятаков
Как-то все сложно звучит. В нест хорошо прописана ...

Мне кажется, что да, так как мне нужно использовать один объект в разных местах, попробую и этот вариант. Спасибо

Ты всё усложнил, мне кажется. Добавляешь в Entity столбец ID родительской сущности. Допустим у тебя users и posts. В posts добавляешь не только связь к родителю, но и объявляешь его столбцом: userId: тип; После этого ты можешь спокойно создавать посты await em.save(Posts.create({ userId: 123, message: 'fff' }));

Кирилл Сабитов
Ты всё усложнил, мне кажется. Добавляешь в Entity ...

Мне так тоже кажется, я не смог найти способ который бы позволял сохранять сущность со связями, при этом не ходить в БД за тем чтобы получить объекты с которыми будет связь и только когда свяжутся объекты можно будет это всё сохранить. Сейчас попробую этот способ, так как он проще, чем решение которое я пытаюсь изобрести. Спасибо большое

Кирилл Сабитов
Ты всё усложнил, мне кажется. Добавляешь в Entity ...

о, интересный способ. А как typeorm будет понимать что этот userId относится к связи с таблицей users, а не просто отдельная колонка?

Vlad
о, интересный способ. А как typeorm будет понимать...

Никак. У них общее название. Этого достаточно. Остальное сделает СУБД (не даст записать туда несуществующий user ID)

Кирилл Сабитов
Никак. У них общее название. Этого достаточно. Ост...

А если пользователь уже существует, подойдёт ли способ?

Vlad
о, понял. Круто, спасибо

Если что в связях через атрибуты декоратора можно установить название колонок.

Кирилл Сабитов
Если что в связях через атрибуты декоратора можно ...

да да, это знаю. Просто думал что typeorm просто выкинет ошибку, потому что колонка дублируется

Кирилл Сабитов
Да

Понял, ещё раз спасибо

Кирилл Сабитов
Ты всё усложнил, мне кажется. Добавляешь в Entity ...

Я добрался до совета, попутно разбираясь в других проблемах, у меня возник вопрос: А откуда у Posts появляется метод сreate?

Кирилл Сабитов
Он extends от BaseEntity

Пока не понимаю. У меня есть OrderService и для него создаю метод createOrder, Order связан с User как много-ко-одному (у 1 пользователя много заказов). На скриншоте Order это класс, который используется для модели Что мне нужно дописать в мой код, чтобы заработал код из комментария?

Похожие вопросы

Обсуждают сегодня

Ready for some fun AND a chance to win TKO Tokens? Join us for exciting minigames in our Telegram group! 🕒 Don’t miss out—games start on today 25 October 2024, at 8 PM! Ge...
Milkyway | Tokocrypto
255
VIP-392 [zkSync] New native USDC market in the Core pool Summary If passed, following the Community proposal “Support native USDC on Venus Core Pool of ZKSync Era” and the a...
Venus Announcements
1
is that okay?
Samurai 🇯🇵
21
How about the project bro Likes the community not that active ?
🅿️abby_FX
19
Guys, Donald Trump or Kamala Harris? It does not matter for Bitcoin in the long run!! 2020 Election: After Joe Biden's victory in November 2020, Bitcoin steadily rose from...
Sabah Shabu
3
checking for Berkeley DB C++ headers... no configure: error: libdb_cxx headers missing, Litecoin Core requires this library for wallet functionality (--disable-wallet to disab...
GNU/Линуксяша-libre (";("
5
@brucezli Any info regarding ETA on updates?
Old Man Tom
10
------------------------------------------------------------------------------ 📢 MAJOR ANNOUNCEMENT: HSUITE ECOSYSTEM UPDATE 📢 @everyone Dear HbarSuite Community, After month...
Big Stones
3
Is like having a company with great talents, early investors & workers who joined a company but saw that the vision was getting lost so they pushed for a change from within. T...
Randall Roland
2
error: Provider exception on decrypt DDO. Status: Request failed with status code 400 error: INDEXER: Error processMetadataEvents: Error: Provider exception on decrypt...
Bordo Tor
6
Карта сайта