NestJS + TypeORM - Ошибка при подключении к mysql и mongodb - PullRequest
0 голосов
/ 25 сентября 2019

Я только что узнал о NestJS, и некоторое время пытался получить приложение для подключения к mysql и mongodb, но просто не могу заставить его работать.Я получаю следующую ошибку:

Nest не может разрешить зависимости AppService (UserMRepository,?).Убедитесь, что аргумент по индексу [1] доступен в контексте AppModule.

Это простое приложение, сгенерированное NestJS, которое просто подключается к двум базам данных и создает запись в каждойбаза данных, когда вызывается getHello ().

app.module.ts

import { AppController } from './app.controller';
import { AppService } from './app.service';
import { TypeOrmModule } from '@nestjs/typeorm';
import { User } from './entity/User.entity';
import { UserM } from './entity/User.mongo';


@Module({
  imports: [
    TypeOrmModule.forRoot({
      "name": "default",
      "type": "mongodb",
      "host": "localhost",
      "port": 27017,
      "database": "typeorm",
      "useNewUrlParser": true,
      "useUnifiedTopology": true,
      "entities": [
        "src/**/**.mongo.ts",
        "dist/**/**.mongo.js"
      ],
    }),   
    TypeOrmModule.forRoot({
      "name": "mysql",
      "type": "mysql",
      "host": "localhost",
      "port": 3306,
      "username": "typeorm",
      "password": "typeorm",
      "database": "typeorm",
      "entities": [
        "src/**/**.entity.ts",
        "dist/**/**.entity.js"
      ],
    }),
    TypeOrmModule.forFeature([UserM]),
    TypeOrmModule.forFeature([User], 'mysql'),
  ],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

app.service.ts

import { InjectRepository } from '@nestjs/typeorm';
import { Repository, MongoRepository, getRepository, DeleteResult } from 'typeorm';
import { User} from "./entity/User.entity";
import { UserM } from './entity/User.mongo';

@Injectable()
export class AppService {
  constructor(
    @InjectRepository(UserM)
    @InjectRepository(User)
    private readonly userMRepository: Repository<UserM>,
    private readonly userRepository: Repository<User>,
  ) {}

  async getHello(): Promise<string> {
    var userM = new UserM();
    userM.firstName = "Timber";
    userM.lastName = "Saw";
    userM.age = 25;
    var newUser1 = await this.userMRepository.save(userM);

    var user = new User();
    user.firstName = "Timber";
    user.lastName = "Saw";
    user.age = 25;
    var newUser2 = await this.userRepository.save(user);

    return;
  }
}

Я могу подтвердить, что будет успешно работать с каждой базой данных в отдельности, но когда я попробую обавместе это терпит неудачу.Я прочитал все посты на эту тему и пробовал разные способы ее настройки, поэтому не уверен, что я делаю неправильно.Может кто-то видеть, что я делаю неправильно?

Пол

1 Ответ

1 голос
/ 25 сентября 2019

Конструктор должен быть исправлен:

constructor(
    @InjectRepository(UserM)
    private readonly userMRepository: Repository<UserM>,
    @InjectRepository(User, 'mysql')
    private readonly userRepository: Repository<User>,
  ) {}
...