我正在使用 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 的指导。
我不确定猫鼬,但在TypeORM中,如果我制作一个实体,它必须扩展BaseEntity,否则我会得到同样的错误。