【发布时间】:2021-08-16 06:03:49
【问题描述】:
我正在尝试构建我的 Express.js 代码,但是在尝试使用控制器中的类方法时遇到了问题。
这是它的样子:
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 中,它一直在说
类型“typeof ProductController”.ts(2339) 上不存在属性“getProducts”
谁能告诉我我做错了什么?
【问题讨论】:
-
您永远不会实例化您的控制器,也永远不会将其传递给服务。
getProducts不是静态方法。如果您想这样使用它,请使用单例对象文字而不是class。
标签: javascript node.js typescript express model-view-controller