#node.js #nestjs #typeorm
Вопрос:
Мне нужно получить ClientProxy в сущности, я делаю это с помощью конструктора, но в конце переменная не определена
Сущность
constructor(
@Inject('NAME') private messageClient: ClientProxy
) {
super();
}
если вы отключите переменную messageClient, она будет равна undefined. как внедрить поставщиков в сущность из базы данных typeorm?
Комментарии:
1. Почему вы хотите внедрить что-то в Сущность?
2. Мне нужно, чтобы messageClient.send был отправлен от сущности
3. Но почему? Зачем связывать бизнес-логику с вашим DAO?
4. для того, чтобы склеить свойства, свойства необходимы для дальнейшего поиска по параметрам
5. Я не понимаю, почему ты хочешь это сделать. Добавление бизнес-логики в DAO в значительной степени считается анти-шаблоном.
Ответ №1:
невозможно ли передать clientproxy сущности
Нет, как я уже упоминал, вы могли бы передать его со службы через какой-нибудь сеттер.
Я описываю
@AfterLoad()
в сущности
Вы можете вместо этого использовать Подписчика сущности, так как он находится в системе NestJS DI.
Лично я по-прежнему предлагаю вам сделать это в службе, а не привязывать логику к вашему объекту доступа к данным. На мой взгляд, DAOS должны быть довольно глупыми и на самом деле должны существовать только для сопоставления сущности базы данных и кода. Если вы продолжите заниматься этим, как я уже сказал, посмотрите, какие подписчики сущности есть у Nest для TypeORM. Хотя вы не можете (и не должны) выполнять инъекцию в саму сущность, поскольку она управляется TypeORM, вы можете работать с подписчиком.