【发布时间】:2020-03-26 22:49:40
【问题描述】:
我的服务是用 nodejs 设计的。 下面是我的场景 我有两个控制器,一个将扩展另一个。两个控制器中都有一个静态函数,其中一个静态变量将被分配一些值。 根据数据的情况,我尝试调用相应的控制器,以便静态变量获得适当的分配值。
注意:
下面的代码只是一个解释场景的sn-p,而不是应用程序的实际代码。但是这段代码sn-p的顺序/调用/控制器结构是完全一样的。此外,listOfDept 变量将在 firstController 和 secondController 的 checkStart 函数中具有单独的业务逻辑。
// firstController.ts
firstController implements IFirstController {
private static listOfDept: string[];
static checkStart(){
firstController.listOfDept = // my logic to fill this object
}
constructor (){}
}
getRelevantData(next: (error: string, response: any) => void): void {
var myObject = firstController.listOfDept;
this.myRepository.uniqueData(myObject, next);
}
}
firstController.checkStart();
export = firstController;
//ifirstController.ts
interface IFirstController {
getRelevantData(next: (error: string, response: any) => void): void;
}
// secondController.ts
secondController extends firstController implements iSecondController {
private static listOfDept: string[];
static checkStart(){
firstController.listOfDept = ["Computer Science"];
}
constructor (){
super();
}
}
secondController.checkStart();
export = secondController;
//isecondController.ts
interface ISecondController implements ifirstController{}
//Controller calling the getRelevantData function
//middlewareController
middlewareController implements IMiddlewareController {
constructor(private firstController: IFirstController, private secondController: ISecondController) {
}
getDepData(data: any, next: (error: string, response: any) => void): void {
if(data.url = "fromParent") {
// im expecting this to make a call to checkStart() of firstController
this.firstController.getRelevantData();
} else {
// im expecting this to make a call to checkStart() of secondController
this.secondController.getRelevantData();
}
}
}
上述代码遇到的问题
无论 getRelevantData 函数以哪种方式被调用,我总是得到 listOfDept 作为计算机科学的值。它永远不会进入第一个控制器的 checkStart 函数。
【问题讨论】:
标签: node.js typescript oop implements