小编See*_*roy的帖子

TypeORM createQueryBuilder:可以使用表名作为字符串而不是实体

在我当前的场景中,第三方将在我的数据库上动态创建表,并将表名称存储为 a varchar,列名称存储jsonb在其他表中,该表在我的 NestJS 后端中定义为实体。

这样我就可以跟踪(和查询)这些表,因为我无法控制它的创建。

为此,我想使用TypeORM而不是使用原始查询,createQueryBuilder因为它更容易使用抽象。

据我所知,TypeORMcreateQueryBuilder需要在子句中定义一个实体from

像这样的事情:

return await getManager()
  .createQueryBuilder()
  .select('*')
  .from(MyDefinedModel, 'modelAlias')
  .getRawMany();
}
Run Code Online (Sandbox Code Playgroud)

所以我想做一些类似的事情:

const tableName = await getDynamicallyGenetaredTableNames().getFirstOne()
// now tableName points to a string that is a table name, i.e 'table-data-192239'

 return await getManager()
  .createQueryBuilder()
  .select('*')
  .from(tableName, 'tableAlias')
  .getRawMany();
Run Code Online (Sandbox Code Playgroud)

因此,传递表名我指向正确的表,但 TypeORM(和 TS)抱怨,因为这tableName是一个字符串,而不是实体(类)类型

如果有更干净的东西可以实现这一点,我真的不想进行类型转换并开始做一些令人讨厌的事情。我在官方文档中没有找到任何解决方案

有什么绝妙的想法吗?谢谢你们

javascript sql node.js typeorm nestjs

8
推荐指数
1
解决办法
5119
查看次数

NestJS 中的 Mocking Bull 队列

我正在尝试测试在向我的一个控制器发送请求后,队列会推送一项作业。实现本身按预期工作。

这是我的app.module.ts

        @Module({
        imports: [
        HttpModule,
        TypeOrmModule.forRoot(typeOrmConfig),
        BullModule.forRoot({
          redis: {
            host: redisConfig.host,
            port: redisConfig.port,
          },
        }),
        // Bunch of unrelated modules
         ],
         providers: [
        {
          provide: APP_FILTER,
          useClass: AllExceptionsFilter,
        },
        ],
         controllers: [SomeControllers],
        })
        export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

这就是我的import.module.ts(使用队列的模块)的样子:

    @Module({
      imports: [
        BullModule.registerQueue({
          name: importQueueName.value,
        }),
       //More unrelated modules,
      ],
      providers: [
        //More services, and bull consumer and producer,
        ImportDataProducer,
        ImportDataConsumer,
        ImportDataService,
      ],
      controllers: [ImportDataController],
    })
    export class ImportDataModule {}
Run Code Online (Sandbox Code Playgroud)

我尝试遵循这种方法

它没有在 beforeAll 钩子中注册队列,我得到了

     Driver not …
Run Code Online (Sandbox Code Playgroud)

testing mocking nestjs bullmq

6
推荐指数
1
解决办法
7113
查看次数

如何操纵场景执行的顺序

我有一些功能可以使用Gherkin和Cucumber进行测试.问题是执行是随机的,例如,第一个场景是在页面上创建元素,第二个场景是寻找它们,第三个场景是移动它们,所有测试都崩溃,因为执行过程如下:nº9firts,那么8,然后是2,然后......

我没有使用执行标签,或者如果我使用它们,我在"功能:"上面使用它来确保所有方案都在运行

任何人都可以在这里带点光明?

java selenium cucumber gherkin selenium-webdriver

0
推荐指数
1
解决办法
157
查看次数