Anonymous
Путаница между импортом в NESTJ с глобальным внедрением модуля
Сообщение
Anonymous » 25 апр 2025, 21:20
Я испытываю путаницу в отношении реализации глобального модуля в NESTJS и импорта общей услуги < /p>
Я следую над этим руководством: 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
1745605215
Anonymous
Я испытываю путаницу в отношении реализации глобального модуля в NESTJS и импорта общей услуги < /p> Я следую над этим руководством: nestjs- Глобальные модули < /p> И это то, что у меня есть до сих пор: shared.service: Это то, что у меня есть: shared.service: И это то, что у меня есть: shared.service: И это то, что у меня есть: shared.service: И это и то, что я имею: shared.service:>[code]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'; [/code] и ... если мне нужно сделать этот импорт, какой смысл глобального модуля?> Подробнее здесь: [url]https://stackoverflow.com/questions/79593056/confusion-between-import-in-nestjs-with-global-module-implementation[/url]