【发布时间】:2019-08-29 01:09:56
【问题描述】:
后端有一个名为 api/Options/GetEmailMessageTemplate 的端点,它返回具有此架构的对象:
{
messageType: string, Enum: [ ConfirmationEmail,
ConfirmationTransaction, RecoveryPassword, SetupAdminAccount, ConfirmationApiKey, ConfirmationDepositTransaction ]
language: string, Enum: [ En, Ru, Zh, Es, Et ]
subject: string,
template: string,
isUsed: boolean
}
例如回复:
{
"messageType": 1,
"language": "En",
"subject": "string",
"template": "string",
"isUsed": true
}
这里是另一个编辑它的端点api/Options/Options/UpdateEmailMessageTemplate,它使用与上面相同的模式的 json。 messageType 可能是 Enum 中元素的编号或 Enum 值(例如 'ConfirmationEmail')
在前端列出所有数据并能够更改它我想出了这种方法:
- 我做了一个严格排序的数组:
messageTypes: [
{
name: 'Confirmation Email',
success: false,
},
...
]
如果更改此模板成功则需要成功显示
- 我从后端得到
messageType作为一个数字ID,我只是将它用作我的数组中的索引(因此,为了使其工作,我的数组必须以完全相同的方式排序该字段的枚举),到获取该messageType的名称并使用success字段进行操作
3.api/Options/Options/UpdateEmailMessageTemplate 使用当前正在编辑的元素的索引获取messageType (indexOf)
虽然这种方法按预期工作,但我不禁想到有更好的方法来处理这个问题。
我想知道是否有更好的做法来处理这个问题
【问题讨论】:
-
所以您只是想将返回从数字转换为枚举字符串,反之亦然?
-
@mwilson 我试图将
messageType服务器返回与我需要显示的前端数组链接起来,id 作为第三个字段可能会更好,但使用严格排序的数组和indexOf来查找一个 idex 并使用该索引作为 id 似乎更短。现在我只是想知道是否有更好的方法,不同于将 id 作为我的数组中的第三个字段 -
还不是 100% 清楚。所以服务器返回一个属性为
messageType(这是一个数字)的对象。但是,您有一个与之匹配的已知“友好值”列表,并且您希望能够看到numbermessageType的字符串翻译? -
@mwilson 是的,几乎是我所需要的,需要设法编辑它并将其发送回服务器,因此需要设法将其翻译回
messageType号码。而且它不是完全友好的值列表,它只是 C# Enum,Enum 键和分配给该键的值可以是服务器将理解和处理的两个参数 -
我会说前端不应该对后端那么熟悉(前端不应该知道后端等枚举的顺序)。 IMO 这将被认为是可以通过使用对象或高阶函数来处理抽象来避免的耦合示例。比喻“你不会告诉服务员‘我想要一个芝士汉堡,在 165 度的平顶烤架上每边 3.5 分钟煮熟,然后盖上盖子融化芝士和....' IE 你是从实现中抽象出来的前端应该来自后端。
标签: javascript api enums