首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确使用@admin-bro/nestjs和@admin-bro/typeorm和postgres?

如何正确使用@admin-bro/nestjs和@admin-bro/typeorm和postgres?
EN

Stack Overflow用户
提问于 2021-02-22 04:27:23
回答 1查看 1.1K关注 0票数 2

admin-bro-nestjs存储库包含一个全面的示例,其中包含mongoose示例。但我需要在typeorm和postgres中使用它。

我尝试将此示例改编为typeorm:

代码语言:javascript
复制
// 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();

代码语言:javascript
复制
// 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 { }

但在应用程序启动时,我得到以下错误:

代码语言:javascript
复制
NoResourceAdapterError: There are no adapters supporting one of the resource you provided

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

EN

回答 1

Stack Overflow用户

发布于 2021-04-23 00:46:12

当我尝试将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。AdminBro /TypeORM似乎可以在不扩展BaseEntity的情况下很好地工作,但显然它是NestJS所必需的。您可以在AdminBro TypeORM adapter documentation的示例中看到它的用法。

这是一个适用于我的示例。

代码语言:javascript
复制
// user.entity
import { Entity, BaseEntity, Column, PrimaryGeneratedColumn } from 'typeorm';

@Entity()
export class UserEntity extends BaseEntity{
  @PrimaryGeneratedColumn()
  id: number;
  @Column()
  name: string;
}
代码语言:javascript
复制
// 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',
        },
    })
  ],
  // ...
})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66306793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档