Я следую над этим руководством: nestjs- Глобальные модули < /p>
И это то, что у меня есть до сих пор:
shared.service:
Это то, что у меня есть:
shared.service:
И это то, что у меня есть:
shared.service:
И это то, что у меня есть:
shared.service:
И это и то, что я имею:
shared.service:>
Код: Выделить всё
import { Injectable } from '@nestjs/common';
@Injectable()
export class SharedService {
async catchError(promise: Promise): Promise {
return promise
.then((data): [undefined, T] => {
return [undefined, data]}
)
.catch((error): [Error] => {
console.error('Error:', error);
return [error];
});
}
}
< /code>
Просто реализация Try-Catch Hell < /li>
< /ul>
shared.module:
import { Module, Global } from '@nestjs/common';
import { SharedService } from './shared.service';
@Global()
@Module({
providers: [SharedService],
exports: [SharedService],
})
export class SharedModule {}
< /code>
app.module: < /p>
import { Module } from '@nestjs/common';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { AppController } from './app.controller';
import { MongooseModule } from '@nestjs/mongoose';
import { AppService } from './app.service';
import { PersonsModule } from './persons/persons.module';
import { SharedModule } from './shared/shared.module';
@Module({
imports: [
ConfigModule.forRoot({ isGlobal: true }),
MongooseModule.forRootAsync({
imports: [ConfigModule],
useFactory: async (configService: ConfigService) => ({
uri: configService.get('MONGODB_URI'),
}),
inject: [ConfigService],
}),
PersonsModule,
SharedModule,
],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
< /code>
И это моя реализация на Persons.service: < /p>
import { Inject, Injectable, InternalServerErrorException } from '@nestjs/common';
import { CreatePersonDto } from './dto/create-person.dto';
import { UpdatePersonDto } from './dto/update-person.dto';
import { InjectModel } from '@nestjs/mongoose';
import { Model } from 'mongoose';
import { Person } from './persons.schema';
import { SharedService } from 'src/shared/shared.service';
@Injectable()
export class PersonsService {
constructor(
private readonly sharedService: SharedService,
@InjectModel('Person') private readonly personModel: Model,
) {}
create(createPersonDto: CreatePersonDto) {
return 'This action adds a new person';
}
async findAll(): Promise {
const [error, data] = await this.sharedService.catchError(
this.personModel.find().exec()
);
if (error || !data) {
throw new InternalServerErrorException('Error fetching persons');
}
return data;
}
async findOne(guid: string) {
const [error, data] = await this.sharedService.catchError(
this.personModel.findOne({guid}).exec()
);
if (error || !data) {
throw new InternalServerErrorException('Error fetching person');
}
return data;
}
update(id: number, updatePersonDto: UpdatePersonDto) {
return `This action updates a #${id} person`;
}
remove(id: number) {
return `This action removes a #${id} person`;
}
}
< /code>
И именно здесь возникает путаница, если я делаю глобальный модуль ...
Почему мне нужно сделать этот импорт на лиц. Сервис выше? < /p>
import { SharedService } from 'src/shared/shared.service';
Подробнее здесь: https://stackoverflow.com/questions/795 ... ementation