如何以正确的方式将@admin-bro/nestjs 与@admin-bro/typeorm 和postgres 一起使用?
Posted
技术标签:
【中文标题】如何以正确的方式将@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',
,
)
],
// ...
)
【讨论】:
以上是关于如何以正确的方式将@admin-bro/nestjs 与@admin-bro/typeorm 和postgres 一起使用?的主要内容,如果未能解决你的问题,请参考以下文章
如何以正确的方式将变量分配给 Ansible 中的另一个变量?