Node.js TypeORM:从订阅服务器中排除种子
我目前正在使用TypeORM库,我对种子和订阅者有问题 问题是每次我为用户运行seed时,我的订户都会被触发并记录新的插入 如何排除正在从种子中提交的插入,并仅记录通过应用程序UI预执行的插入Node.js TypeORM:从订阅服务器中排除种子,node.js,sequelize.js,typeorm,typeorm-datamapper,Node.js,Sequelize.js,Typeorm,Typeorm Datamapper,我目前正在使用TypeORM库,我对种子和订阅者有问题 问题是每次我为用户运行seed时,我的订户都会被触发并记录新的插入 如何排除正在从种子中提交的插入,并仅记录通过应用程序UI预执行的插入 import { EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from 'typeorm'; import { User } from '../users/user.entity'; @EventSubs
import { EntitySubscriberInterface, EventSubscriber, InsertEvent, UpdateEvent } from 'typeorm';
import { User } from '../users/user.entity';
@EventSubscriber()
export class HistorySubscriber implements EntitySubscriberInterface<User> {
/**
* Indicates that this subscriber only listen to User events.
*/
listenTo() {
return User;
}
/**
* Called before User insertion.
*/
// eslint-disable-next-line no-unused-vars
async afterInsert(event: InsertEvent<User>) {
// this gets called multiple times even with seed
}
}
从'typeorm'导入{EntitySubscriberInterface,EventSubscriber,InsertEvent,UpdateEvent};
从“../users/User.entity”导入{User};
@EventSubscriber()
导出类HistorySubscriber实现EntitySubscriberInterface{
/**
*指示此订阅服务器仅侦听用户事件。
*/
listenTo(){
返回用户;
}
/**
*在用户插入之前调用。
*/
//eslint禁用下一行无未使用的变量
异步afterInsert(事件:InsertEvent){
//即使使用seed,它也会被多次调用
}
}
对于每个数据库操作(查询),可以指定是否应调用侦听器:请参阅和。因此,对于种子,请为每个数据库操作禁用侦听器/订阅服务器。对于每个数据库操作(查询),可以指定是否应调用侦听器:请参阅和。因此,对于您的种子,请为每个数据库操作禁用侦听器/订阅者。非常感谢,您又救了我一次:)还有一个问题:我如何在createQueryBuilder()中使用侦听器选项?您可以通过流畅的api配置行为:等待getCustomRepository(User)。createQueryBuilder().insert().callListeners(false). //...
@Loki很高兴我能帮上忙:)非常感谢,你又救了我:)还有一个问题我如何在createQueryBuilder()中使用侦听器选项?你可以通过流畅的api配置行为:等待getCustomRepository(User)。createQueryBuilder().insert().callListeners(false)。//代码>@Loki很高兴我能帮忙:)