无法使用来自控制器的方法 class

Can't use method from a controller class

我正在尝试构建我的 Express.js 代码,但是我 运行 在尝试使用来自控制器的 class 方法时遇到了问题。

这是它的样子:

product.service.ts

export class ProductService {
  constructor(private readonly model: Model<ProductType>) {}

  public getAllProducts = () => {
    return this.model.find({});
  };
}

product.controller.ts

export class ProductController {
  constructor(private readonly service: ProductService) {}

  public getProducts = async (req: Request, res: Response) => {
    const response: ProductType[] = await this.service.getAllProducts();
    res.send(response);
  };
}

products.router.ts

import express, { Router } from 'express';
import { ProductController } from '../controllers/product.controller';

const router: Router = express.Router();

router.get('/', ProductController.getProducts);

问题出在我的products.router.ts,一直说

Property 'getProducts' does not exist on type 'typeof ProductController'.ts(2339)

谁能告诉我我做错了什么?

我认为您应该创建此 class 的实例以便能够访问它

一种可能:

import express, { Router } from 'express';
import { ProductController } from '../controllers/product.controller';

const router: Router = express.Router();

const productModel = /* however you create Model<ProductType> */;
const productService = new ProductService(productModel);
const productController = new ProductController(productService);

router.get('/', productController.getProducts);