当前位置: 首页 > 知识库问答 >
问题:

NestJS事件发射器

刘兴朝
2023-03-14

我正在按照NestJS文档创建事件发射器(文档链接)。当我运行代码时,我得到一个错误:

[Nest]129586-16/06/2021,20:43:31[ExceptionHandler]this.eventEmitter.emit不是函数

这就是我的代码的样子:

import { EventEmitter2 } from "@nestjs/event-emitter";

@EntityRepository(Auth)
export class AuthRepository extends Repository{


    constructor(private eventEmitter: EventEmitter2) {
        super();
    }

    private logger = new Logger(AuthRepository.name);

    async createUser(authDao: SignUpDto): Promise {

        const { password, username, role, email, dateOfBirth, fname, lname } = authDao;

        let user = await this.findOne({ username });

        if (user) {
            throw new ForbiddenException("Username already taken");
        }

        user = this.create({ password, username, role });

        await this.save(user).catch(e => this.logger.error(e));

        this.eventEmitter.emit("user.created", {
            fname, lname, dateOfBirth, email
        });


    };


} 

我不确定我错过了什么。

共有1个答案

赵才俊
2023-03-14

Nest不会对TypeORM存储库类执行任何DI。这是因为这些类具有类型化所必需的其他依赖项,例如实体管理器和连接。注入EventEmitter应该在常规的NestJS提供程序中完成,而不是在TypeO Repo类中完成

 类似资料:
  • Node中的许多对象都会发出事件,例如net.Server每次对等体连接它时都会发出一个事件,fs.readStream会在打开文件时发出事件。 发出事件的所有对象都是events.EventEmitter的实例。 EventEmitter类 正如我们在上一节中看到的,EventEmitter类位于events模块中。 可通过以下代码访问 - // Import events module var

  • 监听事件 事件处理是在节点(cc.Node)中完成的。对于组件,可以通过访问节点 this.node 来注册和监听事件。监听事件可以通过 this.node.on() 函数来注册,方法如下: cc.Class({ extends: cc.Component, properties: { }, onLoad: function () { this.node.on('mou

  • 我试图在Angular中实现类似委托模式的东西。当用户单击时,我想调用一个函数,然后该函数发出一个事件,该事件反过来应该由监听该事件的其他组件处理。 下面是一个场景:我有一个组件: 以下是观察部分: 关键问题是,我如何让观察组件观察所讨论的事件?

  • 假设我们有两个服务,A和B。服务A有一个函数执行以下操作: 验证数据 现在,让我们假设以下步骤之一,步骤3或4失败。由于服务B对数据库进行了更改,这些更改仍然存在。 在这种情况下,有没有办法回滚数据库?我曾考虑过数据库事务,但在nest js中找不到任何方法来实现这一点,尽管TypeOrm支持它,但nest看起来并不自然。如果不是的话,我现在被服务B所做的更改“卡住”了,但是如果没有服务B所做的更

  • 我试图做一个简单的房间在nestjs与soketio和不能掌握一个房间的概念。我想要的是客户端发送一个ID到一个一般的endpoint,然后服务器将加入该套接字到一个特定的房间,然后开始从其他地方向该房间发送消息。我目前有的是客户加入一个名为“会议”的活动,然后被发送一个假会议,但我不知道如何让多个客户加入同一个房间,同时被发送相同的信息。 客户端(html) 服务器(NestJS): 通过此设置

  • 使用mui.trigger()方法可以动态触发特定DOM元素上的事件。 .trigger( element , event , data ) element Type: Element 触发事件的DOM元素 event Type: String 事件名字,例如:'tap'、'swipeleft' data Type: Object 需要传递给事件的业务参数 示例 自动触发按钮的点击事件: var