簡體   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