Крюки TypeORM не запускаются, минимальный проект включен - PullRequest
0 голосов
/ 12 марта 2020

У меня есть простой BeforeInsert и AfterInsert хук, который не вызывается. Все, что он делает, это лог hook. Я использую гнездо js -graphql, но я не думаю, что это проблема. Здесь - минимальное репозиторий Github с примером. Вы можете запустить его, выполнив npm i, а затем отправив мутацию (площадка находится на localhost:3000/graphql) с телом createUser(createInput:{password:"password" email:"test@test.com"}). Она должна завершиться успешно и записать hook.

Здесь хук, ничего не регистрируется:

@Entity('user')
export default class UserEntity {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    @IsEmail()
    email: string;

    @Column()
    @Length(7, 42)
    password: string;

    @BeforeInsert()
    @AfterInsert()
    async validate() {
        console.log("hook")
    }
}

Он вызывается из службы здесь . Вставка не выдает ошибку, и here2 регистрируется:

@Injectable()
export class UserService {
    constructor(
        @InjectRepository(UserEntity)
        private readonly userRepository: Repository<UserEntity>,
    ) { }

    async createNew(email: string, password: string): Promise<number> {
        console.log("here2")
        const hashedPassword = "test"
        const res = await this.userRepository.insert({ email, password: hashedPassword })
        return res.identifiers[0].id
    }
}

1 Ответ

1 голос
/ 12 марта 2020

В соответствии с Документами TypeORM хуки слушателей вызываются до или после их соответствующей операции при использовании метода save диспетчера сущностей или репозитория. Поскольку insert и подобные операции не вызывают save, они не выполняют @Before/After* методы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...