Javascript 雀巢公司+;TypeORM-连接mysql和mongodb时出错

Javascript 雀巢公司+;TypeORM-连接mysql和mongodb时出错,javascript,node.js,mongodb,nestjs,typeorm,Javascript,Node.js,Mongodb,Nestjs,Typeorm,我刚刚了解了NestJS,一段时间以来,我一直在尝试让一个应用程序连接到mysql和mongodb,但我就是无法让它工作。我得到的错误如下: Nest无法解析AppService(UserMRepository,?)的依赖项。请确保索引[1]处的参数在AppModule上下文中可用 这是一个简单的NestJS生成的应用程序,只需连接到两个数据库,并在调用getHello()时在每个数据库中创建一条记录 app.module.ts import { AppController } from './

我刚刚了解了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;
  }
}
从'@nestjs/typeorm'导入{InjectRepository};
从“typeorm”导入{Repository,MongoRepository,getRepository,DeleteResult};
从“/entity/User.entity”导入{User}”;
从“./entity/User.mongo”导入{UserM};
@可注射()
导出类应用程序服务{
建造师(
@注入存储库(UserM)
@注入存储库(用户)
私有只读userMRepository:存储库,
私有只读用户存储库:存储库,
) {}
异步getHello():承诺{
var userM=new userM();
userM.firstName=“木材”;
userM.lastName=“Saw”;
userM.age=25;
var newUser1=等待this.userMRepository.save(userM);
var user=新用户();
user.firstName=“木材”;
user.lastName=“Saw”;
用户年龄=25岁;
var newUser2=等待this.userRepository.save(用户);
返回;
}
}
我可以确认,这将成功地分别处理每个数据库,但当我同时尝试这两个数据库时,它总是失败。我已经阅读了所有关于这个的帖子,并尝试了各种设置方法,所以不确定我做错了什么。有人能看出我做错了什么吗


Paul

构造函数应该是固定的:

constructor(
    @InjectRepository(UserM)
    private readonly userMRepository: Repository<UserM>,
    @InjectRepository(User, 'mysql')
    private readonly userRepository: Repository<User>,
  ) {}
构造函数(
@注入存储库(UserM)
私有只读userMRepository:存储库,
@InjectRepository(用户“mysql”)
私有只读用户存储库:存储库,
) {}

谢谢塔诺,我试过了,但没用。我得到了同样的错误。首先,你应该删除一个实体路径,因为两次使用它们是没有意义的。我假设user.entity用@entity注释,typeorm数据库存在于mysql中。请将“synchronize”:true添加到mysql连接,以查看它是否可以连接到它。typeorm无法在mysql中仅在mongo中创建数据库。如果您可以看到更多错误,请与meTano共享,这些实体略有不同,因为“UserM”对mongodb使用ObjectID类型,而“User”使用int类型。我已经能够确认到每个数据库的连接工作成功,因为我已经依次为每个数据库注释了相应的代码,并且未注释的数据库工作成功。问题似乎更多的是NestJS本身在并行处理两个连接时存在问题。您可以将连接添加到injectrepository注释中。请试一试!