考虑使用 mongodb
进行以下设置(该问题可能与数据库无关):
实体/Person.ts
import { Entity, Column } from 'typeorm';
@Entity
export class Person {
@Column()
name: string;
}
订阅者/PersonSubscriber.ts
import {
EntitySubscriberInterface,
EventSubscriber,
InsertEvent,
} from 'typeorm';
import { Person } from '../entity/Person';
@EventSubscriber()
export class PersonSubscriber implements EntitySubscriberInterface<Person> {
listenTo() {
return Person;
}
afterInsert(event: InsertEvent<Person>) {
console.log(event);
}
}
配置/mongo.ts
import { MongoConnectionOptions } from 'typeorm/driver/mongodb/MongoConnectionOptions';
export const mongoConfig: MongoConnectionOptions = {
type: 'mongodb',
host: 'localhost',
database: process.env.DB_NAME,
useNewUrlParser: true,
useUnifiedTopology: true,
synchronize: true,
logging: false,
entities: ['src/entity/**/*.ts'],
migrations: ['src/migration/**/*.ts'],
subscribers: ['src/subscriber/**/*.ts'],
cli: {
entitiesDir: 'src/entity',
migrationsDir: 'src/migration',
subscribersDir: 'src/subscriber',
},
};
索引.ts
import { createConnection } from 'typeorm';
import { mongoConfig } from 'config/mongo';
createConnection(mongoConfig)
.then(connection => {
console.log('connection established');
})
.catch(console.error);
PersonSubscriber
是 connection.subscribers
数组的第一个元素,但是在插入 Person 文档后,InsertEvent
不会记录到控制台。
缺少什么?
附注这是我设法收集的所有文档
https://github.com/typeorm/typeorm/blob/master/docs/listeners-and-subscribers.md
http://typeorm.delightful.studio/classes/_connection_connection_.connection.html#subscribers
总而言之,他们仍然没有讲述完整的故事。
最佳答案
文件名必须是name.subscribe.ts
ormconfig
"subscribers": ["dist/**/**/**/*.subscriber{.ts,.js}"]
对我有用
关于node.js - 如何在TypeORM中使用订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146915/