使用 Nest.js 和 Mongoose 设置 Admin.js

问题描述 投票:0回答:1

我正在使用 Nest.js 和 Mongoose 配置 Admin.js。最初,我遵循 Admin.js 文档并在新的 Nest.js 项目中安装了 Admin.js 版本 7。我能够使用文档中概述的动态导入将 Admin.js 集成到我的项目中。然而,我在尝试注册 Mongoose 适配器时遇到了困难,导致持续出现 TypeScript 错误。

我决定将 Admin.js 包降级到版本 5。但是,我现在发现自己在尝试将实体添加为资源时遇到了新问题:

应用程序模块

import * as AdminJSMongoose from '@adminjs/mongoose';
import { AdminModule } from '@adminjs/nestjs';
import { MongooseModule } from '@nestjs/mongoose';
import AdminJS from 'adminjs';

AdminJS.registerAdapter({
  Resource: AdminJSMongoose.Resource,
  Database: AdminJSMongoose.Database,
});

MongooseModule.forRoot(process.env.MONGODB_URL),
AdminModule.createAdminAsync({
  imports: [MongooseModule],
  useFactory: async () => ({
    adminJsOptions: {
      rootPath: '/admin',
      resources: [Question],
    },
  }),
});

问题.entity.ts

import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { Document } from 'mongoose';

@Schema({ timestamps: true })
export class Question {
  @Prop({ type: String, required: false, unique: true })
  id: string;

  @Prop({ type: String, required: true })
  text: string;

  @Prop({ type: [{ text: String }], required: true })
  options: { text: string }[];

  @Prop({ type: String, required: true })
  correctOptionId: string;

  @Prop({ type: String })
  image: string;

  @Prop({ type: String, required: true })
  language: string;
}

export type QuestionDocument = Question & Document;

export const QuestionSchema = SchemaFactory.createForClass(Question);

我遇到的错误消息是:

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

我希望获得有关解决此问题并在我的 Nest.js 应用程序中使用 Mongoose 成功配置 Admin.js 的指导。

mongoose nestjs adminjs
1个回答
0
投票

我不确定猫鼬,但在TypeORM中,如果我制作一个实体,它必须扩展BaseEntity,否则我会得到同样的错误。

© www.soinside.com 2019 - 2024. All rights reserved.