@tc-libs/database
v3.6.1
Published
Layer base Mongo/Mongoose del monorepo.
Readme
@tc-libs/database
Layer base Mongo/Mongoose del monorepo.
Il package contiene:
DatabaseOptionsModuleper costruireMongooseModuleOptions- abstract entity/repository riusabili
- interfacce per query, sessioni, cache e pagination
- costanti e decorator di supporto
DatabaseOptionsModule
Serve per centralizzare la costruzione della connection string Mongo:
DatabaseOptionsModule.register({
proto: 'mongodb',
host: '127.0.0.1:27017',
port: 27017,
name: 'mydb',
user: 'mongo',
password: 'secret',
debug: false,
});Poi:
MongooseModule.forRootAsync({
imports: [DatabaseOptionsModule.register(...)],
useExisting: DatabaseOptionsService,
});Repository base
La classe piu importante e DatabaseMongoRepositoryAbstract<Entity, EntityDocument>.
Fornisce:
- CRUD standard
- join/populate opzionale
returnPlain- supporto
ClientSession - integrazione cache con
@tc-libs/app-cache raw()per aggregate pipelinestartTransaction()
Esempio repository custom
export class UserRepository extends DatabaseMongoRepositoryAbstract<
UserEntity,
UserDoc
> {
protected readonly _logger = new Logger(UserRepository.name);
constructor(
@InjectModel(UserEntity.name) model: Model<UserEntity>,
@InjectConnection() connection: Connection,
cache: AppCacheService,
) {
super(model, connection, cache);
}
}Abstract entity
DatabaseBaseEntityAbstractDatabaseMongoEntityAbstract
Ti evitano di ridefinire sempre _id, createdAt, updatedAt.
Interfacce piu usate
IDatabaseFindOneOptionsIDatabaseFindAllOptionsIDatabaseCreateOptionsIDatabaseManyOptionsIDatabaseFindOneAndUpdateOptions
Sviluppo
nx build database
nx test database