如何以正确的方式将@admin-bro/nestjs 与@admin-bro/typeorm 和postgres 一起使用?

     2023-03-08     146

关键词:

【中文标题】如何以正确的方式将@admin-bro/nestjs 与@admin-bro/typeorm 和postgres 一起使用?【英文标题】:How to use @admin-bro/nestjs with @admin-bro/typeorm and postgres in a right way? 【发布时间】:2021-05-24 04:04:12 【问题描述】:

admin-bro-nestjs 存储库包含一个综合示例,其中包含 mongoose 示例。但我需要将它与 typeorm 和 postgres 一起使用。 我尝试将这个示例改编为 typeorm:

// main.ts
import AdminBro from 'admin-bro';
import  Database, Resource  from '@admin-bro/typeorm';
import  NestFactory  from '@nestjs/core';

import  AppModule  from './app.module';

AdminBro.registerAdapter( Database, Resource );

const bootstrap = async () => 
  const app = await NestFactory.create(AppModule);
  await app.listen(3000);

bootstrap();

// app.module.ts
import  Module  from '@nestjs/common';
import  AdminModule  from '@admin-bro/nestjs';
import  TypeOrmModule, getRepositoryToken  from '@nestjs/typeorm';
import  Repository  from 'typeorm';

import  AppController  from './app.controller';
import  AppService  from './app.service';
import  UserEntity  from './user/user.entity';

@Module(
  imports: [
    TypeOrmModule.forRoot(
        type: 'postgres',
        host: 'localhost',
        port: 5432,
        username: 'postgres',
        password: 'password',
        database: 'database_test',
        entities: [UserEntity],
        synchronize: true,
        logging: false,
      ),
    AdminModule.createAdminAsync(
      imports: [
        TypeOrmModule.forFeature([UserEntity]),
      ],
      inject: [
        getRepositoryToken(UserEntity),
      ],
      useFactory: (userRepository: Repository<UserEntity>) => (
        adminBroOptions: 
          rootPath: '/admin',
          resources: [
             resource: userRepository ,
          ],
        ,
        auth: 
          authenticate: async (email, password) => Promise.resolve( email: 'test' ),
          cookieName: 'test',
          cookiePassword: 'testPass',
        ,
      ),
    ),
  ],
  controllers: [AppController],
  providers: [AppService],
)
export class AppModule  

但在应用程序启动时出现以下错误:

NoResourceAdapterError: There are no adapters supporting one of the resource you provided

有没有人有将所有这些库放在一起的经验?

【问题讨论】:

【参考方案1】:

当我尝试将 AdminBro 与 NestJS/Express/TypeORM 集成时,我也得到了NoResourceAdapterError: There are no adapters supporting one of the resource you provided(尽管我使用的是 MySQL 而不是 Postgres)。 admin-bro-nestjs Github issue which links to this question 中发布的解决方案对我没有帮助。

对我来说,NoResourceAdapterError 的原因仅仅是UserEntity 没有扩展BaseEntity。 NestJS/TypeORM 似乎可以在不扩展 BaseEntity 的情况下正常工作,但显然它是 AdminBro 所必需的。您可以在AdminBro TypeORM adapter documentation 的示例中看到它。

这是一个适合我的例子。

// user.entity
import  Entity, BaseEntity, Column, PrimaryGeneratedColumn  from 'typeorm';

@Entity()
export class UserEntity extends BaseEntity
  @PrimaryGeneratedColumn()
  id: number;
  @Column()
  name: string;

// app.module.ts
import  Module  from '@nestjs/common';
import  TypeOrmModule  from '@nestjs/typeorm';
import  AdminModule  from '@admin-bro/nestjs';
 
import  Database, Resource  from '@admin-bro/typeorm';
import AdminBro from 'admin-bro'
AdminBro.registerAdapter( Database, Resource );

@Module(
  imports: [
    TypeOrmModule.forRoot(
      // ...
    ),
    AdminModule.createAdmin(
        adminBroOptions: 
          resources: [UserEntity],
          rootPath: '/admin',
        ,
    )
  ],
  // ...
)

【讨论】:

如何以正确的方式将变量分配给 Ansible 中的另一个变量?

】如何以正确的方式将变量分配给Ansible中的另一个变量?【英文标题】:HowtoassignavariabletoanothervariablesinAnsibleinacorrectway?【发布时间】:2014-12-0212:50:54【问题描述】:我在使用Ansible时遇到了一个意想不到的问题。这是简化的示例... 查看详情

如何以正确的方式旋转画布

】如何以正确的方式旋转画布【英文标题】:Howtorotatecanvasintherightway【发布时间】:2018-03-0209:25:56【问题描述】:我有一张想要裁剪的图片。因此,我创建了具有较暗背景的canvasasoverlay,然后在鼠标移动时,我在该画布上绘制了... 查看详情

如何以正确的方式读取组件内的 redux 状态?

】如何以正确的方式读取组件内的redux状态?【英文标题】:Howtoreadreduxstateinsideacomponenttherightway?【发布时间】:2019-12-1513:26:18【问题描述】:我无法理解如何将组件与我的redux状态连接(以正确的方式)到目前为止,我尝试使用... 查看详情

如何以正确的方式加载 CSS?

】如何以正确的方式加载CSS?【英文标题】:HowtoloadCSSintherightway?【发布时间】:2019-03-1415:22:12【问题描述】:我目前正在建立一个新网站,我现在只有一个css问题。我的头标签之间有这个:<linkrel="stylesheet"type="text/css"href="css/... 查看详情

如何以正确的方式使用英特尔 oneAPI?

】如何以正确的方式使用英特尔oneAPI?【英文标题】:HowtouseInteloneAPIinrightway?【发布时间】:2021-12-3016:29:27【问题描述】:今天我想知道oneAPI中的Conda和Anaconda中的Conda有什么区别以及如何以正确的方式使用oneAPI以获得最大的使用... 查看详情

如何以正确的方式处理 submit() 中的 ajax 响应?

】如何以正确的方式处理submit()中的ajax响应?【英文标题】:Howtohandleajaxresponsewithinasubmit()inaproperway?【发布时间】:2015-10-2613:31:47【问题描述】:您将如何执行ajax调用并在submit()-代码块中接收响应?(以适当的方式)如果你有... 查看详情

如何以编程方式将 LINQ 查询转换为正确描述 linq 表达式的可读英文文本?

】如何以编程方式将LINQ查询转换为正确描述linq表达式的可读英文文本?【英文标题】:HowdoIprogrammaticallytranslateaLINQquerytoreadableEnglishtextthatcorrectlydescribesthelinqexpression?【发布时间】:2010-06-0816:27:38【问题描述】:我正在开发一个... 查看详情

如何以正确的方式在 Firebase 查询中加入结果

】如何以正确的方式在Firebase查询中加入结果【英文标题】:Howtojoinresultsonafirebasequerytherightway【发布时间】:2019-01-2011:17:26【问题描述】:我正在使用Firebase实时数据库来构建我的应用程序Unity。为了建立一个“朋友”排行榜,... 查看详情

如何以编程方式在 iOS9 中获取正确的启动图像?

】如何以编程方式在iOS9中获取正确的启动图像?【英文标题】:HowtogettherightlaunchimageiniOS9programmatically?【发布时间】:2015-10-1408:59:03【问题描述】:我已将不同尺寸的图像添加到LaunchImage资产中。当我使用这段代码时UIImage*launchIm... 查看详情

如何以正确的方式将@admin-bro/nestjs 与@admin-bro/typeorm 和postgres 一起使用?

】如何以正确的方式将@admin-bro/nestjs与@admin-bro/typeorm和postgres一起使用?【英文标题】:Howtouse@admin-bro/nestjswith@admin-bro/typeormandpostgresinarightway?【发布时间】:2021-05-2404:04:12【问题描述】:admin-bro-nestjs存储库包含一个综合示例,其... 查看详情

如何在 ZeroMQ 中以正确的方式中止 context.socket.recv()?

】如何在ZeroMQ中以正确的方式中止context.socket.recv()?【英文标题】:Howtoabortcontext.socket.recv()therightwayinZeroMQ?【发布时间】:2015-06-0422:41:15【问题描述】:我有一个小软件,其中有一个单独的线程正在等待ZeroMQ消息。我使用的是Zer... 查看详情

wcf技术我们应该如何以正确的方式去学习掌握

一、WCF技术我该如何学习?   阿笨的回答是:作为初学者的我们,那么请跟着阿笨一起玩WCF吧,阿笨将带领大家如何以正确的姿势去掌握WCF技术。由于WCF技术知识点太多了,就纯基础概念性知识都可以单独出一本书来... 查看详情

wcf技术我们应该如何以正确的方式去学习掌握

一、WCF技术我该如何学习?   阿笨的回答是:作为初学者的我们,那么请跟着阿笨一起玩WCF吧,阿笨将带领大家如何以正确的姿势去掌握WCF技术。由于WCF技术知识点太多了,就纯基础概念性知识都可以单独出一本书来... 查看详情

wcf技术我们应该如何以正确的方式去学习掌握

一、WCF技术我该如何学习?   阿笨的回答是:作为初学者的我们,那么请跟着阿笨一起玩WCF吧,阿笨将带领大家如何以正确的姿势去掌握WCF技术。由于WCF技术知识点太多了,就纯基础概念性知识都可以单独出一本书来... 查看详情

如何以正确的方式取消异步查询

】如何以正确的方式取消异步查询【英文标题】:Howtocancelanasyncquerytherightway【发布时间】:2013-08-0709:57:55【问题描述】:这是thisquestion的后续问题。我正在尝试从我的数据库中加载数据,这需要5-10秒,但我希望GUI保持响应,并... 查看详情

如何以编程方式获取正确的 iOS 版本?

】如何以编程方式获取正确的iOS版本?【英文标题】:HowtogettheproperiOSversionprogrammatically?【发布时间】:2015-03-3012:58:04【问题描述】:我想获取用户设备的当前操作系统版本,以便在后端进行一些分析。我试图得到它如下,[[[UIDe... 查看详情

如何以正确的方式编码和解码字符[重复]

】如何以正确的方式编码和解码字符[重复]【英文标题】:Howtoencodeanddecodecharactersintherightway[duplicate]【发布时间】:2015-12-0702:23:39【问题描述】:我正在开发一个使用编码为UTF-8的网站。服务端采用Java开发,数据库采用Windows-1252... 查看详情

如何以正确的方式处理结果集?

】如何以正确的方式处理结果集?【英文标题】:HowtoProcessResultSetstherightway?【发布时间】:2015-08-0208:00:48【问题描述】:在Java中从Sqlite数据库处理ResultSet的正确方法是什么?目前我有一个执行所有SQL查询的“SQL”类。如果另一... 查看详情