我正在使用Node.js,Typescript中的一个软件来生成保险线索,每个线索的状态约为15或更多,例如(新线索,重复项,有日期,有合同,没有回应...等)在某些状态下,我们具有该状态的不同数据,例如不在家,对于该状态,我们需要照片,位置,对于[[终端,有日期和时间,因此。 。什么是组织端点的最佳方法,当前的架构就像...
PUT / lead /:id /
const status = req.body.status;
if(status === 14){
lead.termine.date = req.body.date //etc
}
if(status === 13){
lead.recall.creationTime = req.body.date //etc
}
if(status === 12){
lead.pending.creationTime = leadDatabase.pending.creationTime
}
[基本上,我们每次都发送整个潜在客户/用户并更改数据,我不愿意像以前的程序员一样添加许多其他if-else,如何解决这个问题并使它看起来更好。我想也许是将PUT / status /:id制作出来,但这不能解决if-else问题。
对于if-else,您可以使用switch语句使它更整洁,但是如果您想创建通用解决方案,那么我建议保留状态ID映射到要复制的必填字段对于每种状态,例如
const statuses : { [key:number]:{ field: string, values: []string; } = {
14: {field: "termine", values: ["date"]}
....other states
};
这将使您可以像这样对状态更新进行通用处理:
const statusCfg = statuses[req.body.status]; for (const valFld of statusCfg.values) { lead[statusCfg.field][valFld] = resp.body[valFld]; }
最终,这取决于每种状态的处理方式有多不同,如果不能以这种方式通用化它,您可能希望查看每种状态的单独处理程序,这些处理程序遵循单个接口。然后,您仍然可以使用地图查找正确的处理程序。