首页 > 解决方案 > 此表达式不可构造。类型“xxxx”没有构造签名

问题描述

我有一个错误,我无法理解我做错了什么。我正在按照https://docs.nestjs.com/techniques/mongodb中的说明进行操作。不同之处在于我创建了接口来构建实现服务的不同策略(为此我在 Model 中制作了一个包装器)。

import { Inject, Injectable } from "@nestjs/common";
import { Model } from "mongoose";
import { Documents } from "src/domain/schemas/documents.schema";

interface IDocumentRepository {
  save();
}

interface IDocumentRepositoryFactory {
  new(doc?: any): IDocumentRepository;
}

export function createIDocumentRepository(ctor: IDocumentRepositoryFactory, doc?: any): IDocumentRepository {
  return new ctor(doc);
}

@Injectable()
export class DocumentRepository implements IDocumentRepository {

  constructor(
    private doc?: Documents,
    @Inject()
    private repository?: Model<Documents>
  ) {}

  /* others fields and methods */

  save() {
    this.doc.save()
  }
}

在其他代码点中,我调用:

someMethod(repository: DocumentRepository) {
    /* others codes */
    const mdoc = new this.repository(mongoModelDoc); // <<<<---- error  
    mdoc.save();
    /* others codes */
}

它导致以下错误:

This expression is not constructable. Type 'DocumentRepository' has no construct signatures.
      return new this.repository(document)

出了什么问题以及如何解决以满足此实施?

标签: node.jsmongoosenestjsnestjs-mongoose

解决方案


推荐阅读