javascript - NestJS + TypeORM - 连接到 mysql 和 mongodb 时出错

标签 javascript node.js mongodb nestjs typeorm

我刚刚开始学习 NestJS,一段时间以来我一直在尝试让一个应用程序连接到 mysql 和 mongodb,但我就是无法让它工作。我得到的错误如下:

Nest can't resolve dependencies of the AppService (UserMRepository, ?). Please make sure that the argument at index [1] is available in the AppModule context.

这是一个简单的 NestJS 生成的应用程序,它只连接到两个数据库,并在调用 getHello() 时在每个数据库中创建一条记录。

应用程序模块.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 {}

应用程序服务.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;
  }
}

我可以确认这将成功地单独使用每个数据库,但是当我同时尝试两者时它总是失败。我已经阅读了所有关于此的帖子并尝试了各种设置方法,所以不确定我做错了什么。有人能看出我做错了什么吗?

保罗

最佳答案

构造函数应该是固定的:

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

关于javascript - NestJS + TypeORM - 连接到 mysql 和 mongodb 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58088461/

相关文章:

javascript - 单页应用程序 : auth token management and browser refreshes

node.js - 本地安装时的无关软件包

node.js - Socket.io 超出范围或缺少方法?

mongodb - 如果值相同,mongoDB 在排序时如何对值进行排序?

node.js - 在集合/对象中查找 - SailsJS 和 Waterline ORM

javascript - Google map javascript API + HTML5 地理定位怪癖

javascript - Angular 2 路由已弃用 : How to detect CanActivate?

node.js - 安装sqlite3时node-pre-gyp出错

java - 在 DOM 中使用 mongodb 对象的 _id 值是个好主意吗?

javascript - 当自定义元素中的所有内部绑定(bind)在 Polymer 中准备就绪时,如何获取事件?