无法使用来自控制器的方法 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);
我正在尝试构建我的 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);