繁体   English   中英

错误 TS2740 类型 'DeepPartial<quiz> []' 缺少类型“问题”的以下属性:id、问题、hasId、save 和另外 4 个</quiz>

[英]error TS2740 Type 'DeepPartial<Quiz>[]' is missing the following properties from type 'Question': id, question, hasId, save, and 4 more

我不知道如何解决这个错误。 有谁知道我需要修复什么才能使此代码正常工作?

import { Injectable } from '@nestjs/common';
import { InjectRepository } from '@nestjs/typeorm';
import { CreateQuestionDto } from './dto/create-question.dto';
import { Question } from './question.entity';
import { QuestionRepository } from './question.repository';

@Injectable()
export class QuestionService {
  constructor(
    @InjectRepository(QuestionRepository)
    private questionRepository: QuestionRepository,
  ) {}

  async createQuestion(question: CreateQuestionDto): Promise<Question> {
    return await this.questionRepository.save(question);
  }
}

返回以下错误:

src/modules/quiz/question.service.ts:15:5 - 错误 TS2740:“DeepPartial[]”类型缺少“问题”类型的以下属性:id、question、hasId、save 和另外 4 个。

15 返回等待 this.questionRepository.save(question); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~

src/modules/quiz/question.service.ts:15:47 - 错误 TS2769:没有重载匹配此调用。 Overload 1 of 4, '(entities: DeepPartial[], options?: SaveOptions): Promise<(DeepPartial & Quiz)[]>',给出了以下错误。 “CreateQuestionDto”类型的参数不能分配给“DeepPartial[]”类型的参数。 类型“CreateQuestionDto”缺少类型“DeepPartial[]”中的以下属性:长度、弹出、推送、连接等 29 个。 Overload 2 of 4, '(entity: DeepPartial, options?: SaveOptions): Promise<DeepPartial & Quiz>',给出了以下错误。 “CreateQuestionDto”类型与“DeepPartial”类型没有共同的属性。

15 返回等待 this.questionRepository.save(question);

问题实体:

import { BaseEntity, Column, Entity, PrimaryGeneratedColumn } from 'typeorm';

@Entity('questions')
export class Question extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: string;

  @Column({
    type: 'varchar',
  })
  question: string;
}

问题库:

import { EntityRepository, Repository } from 'typeorm';
import { Quiz } from './quiz.entity';

@EntityRepository(Quiz)
export class QuestionRepository extends Repository<Quiz> {}

CreateQuestion dto:

import { IsNotEmpty, Length } from 'class-validator';

export class CreateQuestionDto {
  @IsNotEmpty()
  @Length(3, 255)
  question: string;
}

问题库:

import { EntityRepository, Repository } from 'typeorm';
import { Quiz } from './quiz.entity';

@EntityRepository(Quiz)
export class QuestionRepository extends Repository<Quiz> {}

问题是您的QuestionRepository指向另一个实体( Quiz )。

将其更改为:

export class QuestionRepository extends Repository<Question> {}

这样,您可以避免使用any子句并直接在save调用上使用 dto。

  async createQuestion(question: CreateQuestionDto): Promise<Question> {
    return await this.questionRepository.save(question);
  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM