mongoose 从nest.js中的另一个模式导入模式

ee7vknir  于 2023-06-23  发布在  Go
关注(0)|答案(1)|浏览(87)

我正在使用Nest.js和MongoDB。定义了一个通用模式。
common.schema.ts:

import { AbstractDocument, ObjectIdType } from '@app/common';
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { SchemaTypes } from 'mongoose';

@Schema({
  timestamps: true,
  versionKey: false,
})
export class Common extends AbstractDocument {
  @Prop({ type: SchemaTypes.ObjectId })
  studentId: ObjectIdType;

  @Prop()
  studentName: string; 

  @Prop()
  studentNumber: string; 

  @Prop()
  grade: string; 
}
export const CommonSchema = SchemaFactory.createForClass(Common);

需要在以下模式中使用上述模式值:
student.schema.ts:

import { AbstractDocument, ObjectIdType } from '@app/common';
import { Prop, Schema, SchemaFactory } from '@nestjs/mongoose';
import { SchemaTypes } from 'mongoose';

@Schema({
  timestamps: true,
  versionKey: false,
})
export class Mark extends AbstractDocument {
  @Prop({ type: SchemaTypes.ObjectId })
  subjectId: ObjectIdType;

  @Prop()
  subjectName: string; 

  @Prop()
  totalMarks: string; 
}

export const MarkSchema = SchemaFactory.createForClass(Mark);

公共模式包含在学生模块中。
student.module.ts:

import { Student, StudentSchema } from './student.schema';
import { Common, CommonSchema } from '../common.schema';

@Module({
  imports: [
    MongooseModule.forFeature([
      {
        name: Student.name,
        schema: StudentSchema,
      },
      {
        name: Common.name,
        schema: CommonSchema,
      },
    ])
  ],
  controllers: [StudentController],
  providers: [StudentService, StudentRepository],
})
export class StudentModule {}

我不知道该怎么办。我需要的最终数据插入如下:

{
  _id: ObjectId('643f8a6773a92fb1552e4c89'),
  studentId: ObjectId('643f8a6773a92fb1552e4c90'),
  studentName: 'xxxyyy',
  studentNumber: 12345,
  grade: 2,
  subjectId: ObjectId('643f8df1885133b26167166c'),
  subjectName: 'English',
  totalMarks: 55
}

如何在Nest.js中实现这一点?
需要一些有价值的帮助。

a0zr77ik

a0zr77ik1#

在这种情况下,您可以使用继承。变化

export class Mark extends AbstractDocument

export class Mark extends Common

希望这有帮助:)

相关问题